所以,我有一些控件的窗口。在資源部分,我定義這個風格:爲什麼這個DataTrigger改變基於祖先附屬屬性的元素樣式不起作用?
<Style x:Key="StyleNavBar" TargetType="{x:Type Grid}">
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentTheme, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
<DataTrigger.Value>
<theme:WinTheme>WindowsClassic</theme:WinTheme>
</DataTrigger.Value>
<Setter Property="Background" Value="#FFFFFFFF" />
</DataTrigger>
</Style.Triggers>
</Style>
在我的窗口,我定義了一個名爲哪些商店(基於ENUM)當前主題使用的系統範圍內的「CurrentTheme」附加屬性。下面的代碼:
public static readonly DependencyProperty CurrentSystemThemeProperty =
DependencyProperty.RegisterAttached(
"CurrentSystemTheme",
typeof(WinTheme),
typeof(MainWindow),
new UIPropertyMetadata(WinTheme.AeroGlass));
public WinTheme CurrentTheme
{
get
{
return (WinTheme)GetValue(CurrentSystemThemeProperty);
}
set
{
SetValue(CurrentSystemThemeProperty, value);
}
}
每當用戶改變系統主題,我通過窗口的WndProc收到回調,通知該主題已經改變。而且,如您所見,CurrentTheme屬性的默認值是WinTheme.AeroGlass。然後我在上面定義的樣式風格的網格:
<Grid Height="34" Name="grdNavBar" VerticalAlignment="Top" Style="{DynamicResource StyleNavBar}">
我的目標是改變基於CurrentTheme價值的風格,但上述定義的觸發時主題更改(只與工作不工作CurrentTheme的默認值,即不對屬性的變化作出反應)。
有關如何完成此任何想法?
謝謝,伊恩。多麼愚蠢的錯誤:)。它現在有效。並感謝提示。 – EdMelo 2010-11-17 01:22:44