提高财产时获取访问被拒绝

时间:2012-12-06 14:26:50

标签: c# xaml windows-runtime winrt-xaml windows-store-apps

我有一个像这样定义的类(我删除了一些代码行,比如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:

我试图通过RunAsyncWindow.Current.Dispatcher提出事件,但这并没有改变任何事情。我在这做错了什么?

1 个答案:

答案 0 :(得分:1)

上次检查时,样式设置器不支持绑定。