1

私は次のスタイルを自分に適用する必要がありますListViewItem

<UserControl.Resources>

<local:Look x:Key="ListViewItemLook" Background="Magenta"/>


<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Style.Triggers>

    <Trigger Property="IsSelected" Value="True">
        <Setter Property="Background" Value="{Binding Source={DynamicResource ListViewItemLook}, Path=Background}"/>
    </Trigger>

</Style.Triggers>

</Style>

しかし、私は例外を受け取ります、私は変更しようとします:

<Setter Property="Background" Value="{Binding Path=Background}"/>

そして、スタイルに追加します。

<Setter Property="DataContext" Value="{DynamicResource ListViewItemLook}"/>

しかし、動作しません。BackGroundプロパティを実行時に設定する必要があるため、StaticResourceにバインドできません。

私は何をしなければなりませんか?ありがとう。

4

2 に答える 2

0

local:Lookとsetterの両方が同じ色を参照するようにしたい場合は、小さなリファクタリングを実行します。

色を別のSolidColorBrushに引き出し、両方のアイテムがそれを参照するようにします。

<SolidColorBrush x:Key="SelectedListViewItemBackground" Color="Magenta" />
<local:Look x:Key="whatever" Background="{StaticResource SelectedListViewItemBackground}" />
<Setter Property="Background" Value="{StaticResource SelectedListViewItemBackground}" />

あなたが何か他のことをしようとしているのなら、質問が意味をなさないので、私はそれが何であるかを理解することができません。

于 2012-10-01T21:10:46.410 に答える
0

私の知る限り、DynamicResource 拡張機能は DependencyProperty メカニズムを使用します (バインディングとほとんど同じです)。したがって、DependencyProperty ではないため、DynamicResource を使用して Binding オブジェクトの Source プロパティを設定することはできません。

さらに、リソース内の Look 自体ではなく、Look の Background プロパティを変更する場合。次に、バインド プロパティに Look as static resource を設定しても問題ありません。もちろん、Look クラスの Background プロパティは、PropertyChanged イベントをトリガーするか、DependencyProperty 自体である必要があります。

于 2012-10-02T16:57:46.097 に答える