我有一个像这样定义的类(我删除了一些代码行,比如null检查,以保持简短):
public sealed class CodeTheme : INotifyPropertyChanged
{
public void Reload()
{
PropertyChanged(sender, new PropertyChangedEventArgs("MyProperty"));
}
public Thickness MyProperty
{
get
{
return new Thickness():
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
我正在使用StandardStyles.xaml
在XAML中注册codetheme类<me:CodeTheme x:Key="Theming" />
然后,我在varios模板和样式中使用它,如下所示:
<Style x:Key="Style1" TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Margin" Value="{Binding Source={StaticResource Theming}, Path=MyProperty}" />
</Style>
然后我可以在程序中的任何时候调用Reload
方法,这是第一次在App.xaml.cs的覆盖OnLaunched
事件中
当我在DataTemplate
中分配它们时,这适用于颜色,字符串和其他厚度值。但是,当我在Style
中使用它时,一旦触发PropertyChanged
事件,我就会收到以下错误:
System.UnauthorizedAccessException未被用户代码处理 的HResult = -2147024891 消息=访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED)) 来源=系统 StackTrace :(我删除了这个) InnerException:
我试图通过RunAsync
从Window.Current.Dispatcher
提出事件,但这并没有改变任何事情。我在这做错了什么?
答案 0 :(得分:1)
上次检查时,样式设置器不支持绑定。