1

私は次のxamlコードを持っています:

<ControlTemplate x:Key="ViewItemTemplate"
                         TargetType="ListViewItem">
        <StackPanel Orientation="Horizontal">
            <CheckBox Margin="0,0,3,0" x:Name="CkBox">
                <CkBox.IsChecked>
                    <Binding Path="IsSelected"
                                 Mode="TwoWay">
                        <Binding.RelativeSource>
                            <RelativeSource Mode="TemplatedParent" />
                        </Binding.RelativeSource>
                    </Binding>
                </CkBox.IsChecked>
                 <DataTrigger Binding="{Binding InvalidForeground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" Value="true">
                    <Setter TargetName="CkBoxVisual" Property="Foreground" Value="#999999"/>
                </DataTrigger>
            </CheckBox>
            <ContentPresenter />
        </StackPanel>
    </ControlTemplate>

Public class Demo
{
  private bool _invalidForeGround;
        public bool InvalidForeground
        {
            get
            { return _invalidForeGround; }
            set
            {
                _invalidForeGround = value;
                Notify("InvalidForeground");
            }
        }
        private void Notify(string propName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
        public event PropertyChangedEventHandler PropertyChanged;
}

Xaml.csファイル:

private readonly RangeObservableCollection<SlotInfo> _validDemo;
public ReadOnlyObservableCollection<SlotInfo> DemoChecks
        {
            get { return ( ReadOnlyObservableCollection<SlotInfo> )GetValue( DemoChecksProperty ); }
            set
            {
                SetValue( DemoChecksProperty, value );
                this.CheckInvariants();
            }
        }

        foreach(var demo in DemoChecks)
        { 
               demo.InvalidForeground = true;
               _validDemo.Add(demo);            
        }

このコードから、チェックボックステキストDemo1、Demo2、Demo3は赤で表示されるはずです。

_
|_| Demo1  
 _
|_| Demo2
 _
|_| Demo3

But instead i get it like this:
 _
|_| System.Windows.DataTrigger Demo1  
 _
|_| System.Windows.DataTrigger Demo2
 _
|_| System.Windows.DataTrigger Demo3

誰か助けてもらえますか、私は何が間違っていますか?

4

0 に答える 0