1
我想在運行時動態更新默認的Window樣式,以便在運行時動態更改FontSize和FontFamily。我發現,在你的資源字典樣式在運行時密封的,不能改變的,所以我用更新的款式下面的方法:WPF在運行時更新樣式
<Style TargetType="{x:Type Window}">
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="12pt"/>
</Style>
用下面的代碼:
Style newStyle = (Make a copy of the old style but with the FontSize and FontFamily changed)
// Remove and re-add the style to the ResourceDictionary.
this.Resources.Remove(typeof(Window));
this.Resources.Add(typeof(Window), newStyle);
// The style does not update unless you set it on each window.
foreach (Window window in Application.Current.Windows)
{
window.Style = newStyle;
}
有幾種這種方法存在問題,我有幾個問題,爲什麼事情是這樣的。
- 爲什麼樣式在運行時是密封的,並且有一種使它們開啓的方法?
- 當我重新添加新樣式時,爲什麼我的所有窗口都沒有拾取?爲什麼我必須手動將它應用到每個窗口?
- 有沒有更好的方法?
+1至少手動的方法我到目前爲止看到,歡呼! – kallotec 2014-05-02 02:05:56