スキン/テーマを使用するアプリを作成しようとしています(使用する色の異なるパレットから選択できます)。
SolidColorBrush
プロパティを定義します
public class ThemeManager
{
public SolidColorBrush ForeBrush { get; set; }
public ThemeManager()
{
ForeBrush = new SolidColorBrush(Colors.Black);
}
public void SetTheme()
{
ForeBrush.Color = Colors.Red;
}
}
XAMLでバインドします
<TextBlock Foreground="{Binding ForeBrush,Source={StaticResource Theme}}" />
App.xamlでテーマリソースを宣言します
<local:ThemeManager x:Key="Theme" />
問題は、次のようなスタイルを作成するときです。
<Style x:Key="TextBlockStyle1" TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding ForeBrush,Source={StaticResource Theme}}" />
</Style>
これは、に配置するとPage.Resources
機能しますが、リソースディクショナリに配置すると(そしてApp.xamlに追加すると)、アプリがクラッシュします(App.gicsのDebugger.Break())。これは、セッターを使用している場合にのみ発生するようです。
私はここで何が間違っているのですか?
編集:リソースディクショナリファイルにスタイルを配置し、app.xamlでそれを参照します