0

esListBoxを含むWPFがあります。バインドされた値が更新されたことをViewModelが認識したときに、CheckBoxのテキストの色を赤に変更したいと思います。TextBox以下のXAMLを使用していますが、機能していません。IsUpdatedクエリされているプロパティを確認できますが、値がTrueの場合、色は変化しません。明らかな何かが欠けていると確信していますが、それを完全に理解することはできません。

<ListBox MinHeight="100" ItemsSource="{Binding Items}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border Padding="2" SnapsToDevicePixels="true">
                <CheckBox x:Name="_checkBox" IsChecked="{Binding Path=IsAllowed}" Content="{Binding Item}"/>
            </Border>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding IsUpdated}" Value="True">
                    <Setter TargetName="_checkBox" Property="Foreground" Value="Red"/>
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
4

1 に答える 1

2

INotifyPropertyChanged (Matt Hamilton が述べたように) を Item クラスに実装し、IsUpdated を false から true に、またはその逆に設定すると、PropertyChanged イベントを発生させていますか。

public class Item : INotifyPropertyChanged
{
    // ...

    private bool _isUpdated;
    public bool IsUpdated
    {
        get{ return _isUpdated; }
        set {
                _isUpdated= value;
                RaisePropertyChanged("IsUpdated");
            }
    }

    // ...
    /// <summary>
    /// Occurs when a property value changes.
    /// </summary>
    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(string propertyName)
    {
        if(PopertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

    // ...
}
于 2009-10-27T07:56:39.030 に答える