1

私はこのように定義されたクラスを持っています (短くするために、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" />

それよりも、次のようにさまざまなテンプレートとスタイルで使用しています。

<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>

次に、プログラム内のいつでも、App.xaml.csReloadの上書きイベントで初めてメソッドを呼び出すことができます。OnLaunched

これは、色、文字列、およびその他の厚さの値を に割り当てるときに機能しDataTemplateます。ただし、で使用すると、イベントStyleを発生させるとすぐに次のエラーが発生します。PropertyChanged

System.UnauthorizedAccessException はユーザー コードによって処理されませんでした。HResult=-2147024891 Message=アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED)) Source=System StackTrace: (私はこれを削除しました) InnerException:

RunAsyncからイベントを発生させようとしましたWindow.Current.Dispatcherが、何も変わりませんでした。ここで何が間違っていますか?

4

1 に答える 1

1

前回チェックしたとき、スタイルセッターではバインディングがサポートされていませんでした。

于 2012-12-06T16:51:56.107 に答える