我有這樣定義的類(我已刪除了一些代碼行,像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;
}
我註冊在XAML的codetheme類這樣,使用StandardStyles.xaml
<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
方法在程序中的任何時候,第一次在覆蓋OnLaunched
事件的App.xaml.cs
這適用於顏色,字符串和其他厚度值當我爲它們分配在DataTemplate
。然而,當我在一個Style
使用它,我只要我火PropertyChanged
事件得到以下錯誤:
System.UnauthorizedAccessException的是由用戶代碼 的HResult = -2147024891 消息=訪問被拒絕未處理。 (異常來自HRESULT:0X80070005(E_ACCESSDENIED)) 源=系統 堆棧跟蹤:(我已經刪除了) 的InnerException:
我試圖通過RunAsync
從Window.Current.Dispatcher
引發事件但沒有改變任何東西。我在這裏做錯了什麼?
您確定PropertyChanged不爲null? –
@ArsenMkrt是的,我完全相信,因爲在原始源代碼中有一個空的檢查(正如我在第一句中提到的,我已經刪除了一些行來保持它的簡短) – UrbanEsc
有更多的堆棧跟蹤可能會很有幫助。 – mydogisbox