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(),以便可以在各個點覆蓋樣式。
以上內容是最近開發碰到的問題,如果有什麼不對,還請各位大佬多多指正!