WPF Prism:InteractionRequestTrigger PopupWindowAction使用MetroWindow

XAML文件

後臺:通過重寫CreatWindow

另外,在這裏還遇到一個問題,因爲官方默認控件title不是微軟雅黑,我想設置爲微軟雅黑

官方給了兩個方案

1、因爲Title是動態綁定的,綁定的規則應該是誰裏的近,就綁定哪個Key值。所以通過重寫Key,即可實現!

<FontFamily x:Key="MahApps.Fonts.Family.Window.Title">微軟雅黑</FontFamily>

但是我發現,我將這段代碼寫進resourceDictionary,沒效果。原因還沒找到!

於是,我開始嘗試官方給的第二種方法,重寫TitleTemplate

\
        <DataTemplate x:key="MahApps.Metro.Styles.MetroWindowTitle">
            <TextBlock Margin="8 -1 1 0"
                       VerticalAlignment="Center"
                       FontFamily="{DynamicResource MahApps.Fonts.Family.Window.Title}"
                       FontSize="{DynamicResource MahApps.Font.Size.Window.Title}"
                       Text="{TemplateBinding Content}"
                       TextTrimming="CharacterEllipsis" />
        </DataTemplate>

然後在後臺通過代碼引用:

在尋找資源的時候:我使用了兩種方式,首先嚐試的就是Application.Current.Resources["Key"],但是沒有效果,通過斷點查看,發現,沒有找到自定義的資源。

於是,開始嘗試第二種方式FrameworkElement.FindResource("Key"),方法可行!

 

尋找資源有兩種方式:Application.Current.FindResource()  FrameworkElement.FindResource的區別。 

可以在可視樹中的幾乎任何元素上定義資源。

FrameworkElement.FindResource()將在樹上爬,在每個節點上尋找資源,並最終將其一直傳遞到Application。Application.Current.FindResource []跳過所有這些,直接進入Application上的資源。您幾乎總是想使用FindResource(),以便可以在各個點覆蓋樣式。

以上內容是最近開發碰到的問題,如果有什麼不對,還請各位大佬多多指正!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章