0

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

<DataTemplate DataType="{x:Type abc}">
                <StackPanel Orientation="Horizontal">
                    <CheckBox Margin="0,0,3,0" x:Name="CheckBox">
                        <CheckBox.IsChecked>
                            <Binding Path="IsSelected"
                                     Mode="TwoWay">
                                <Binding.RelativeSource>
                                    <RelativeSource Mode="Template" />
                                </Binding.RelativeSource>
                            </Binding>
                        </CheckBox.IsChecked>
                    </CheckBox>                                    
                    <TextBlock Text="{Binding}"
                               Margin="0,0,10,5" />
                    <TextBlock Text="{Binding Channel}"
                               Margin="7,0,0,0"
                               Visibility="{Binding Path=IsChannelVisible,ElementName=View, Converter={StaticResource BooleanToVisibile}}" />
                </StackPanel>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding Valid}" Value="true">
                        <Setter TargetName="CheckBox" Property="Foreground" Value="#000000"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Valid}" Value="false">
                        <Setter TargetName="CheckBox" Property="Foreground" Value="#999999"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
</DataTemplate>

私が達成しようとしているのは、チェックボックスのテキストの色を変更することです。しかし、上記のコードは機能しません。誰でもこれで私を助けてもらえますか?

Tilak のコードを試してみました:

<ControlTemplate x:Key="Template"
                             TargetType="ListViewItem">
                <StackPanel Orientation="Horizontal">
                    <CheckBox Margin="7,0,0,0" Foreground={Binding Valid, Converter={StaticResource ValidToColorConverter}} 
                              x:Name="CheckBox">
                        <CheckBox.IsChecked>
                            <Binding Path="IsSelected"
                                     Mode="TwoWay">
                                <Binding.RelativeSource>
                                    <RelativeSource Mode="Parent" />
                                </Binding.RelativeSource>
                            </Binding>
                        </CheckBox.IsChecked>
                    </CheckBox>                    
                    <ContentPresenter />
                    <DataTemplate.CheckBox>
                        <Intellivu:ValidToColorConverter x:Key="ValidToColorConverter" />
                    </DataTemplate.CheckBox>
                </StackPanel>
            </ControlTemplate>

これは機能していませんか?私は何か間違ったことをしていますか?

4

1 に答える 1

0

コンバーターを使用して、Foreground プロパティに直接バインドできます。

次の手順に従ってください

ValidToColorConverter の作成

public class ValidToColorConverter : IValueConverter
{
    // This converts the DateTime object to the string to display.
    public object Convert(object value, Type targetType, object parameter,
        System.Globalization.CultureInfo culture)
    {
      bool valid = value as bool;
      return valid ? Colors.Black : new SolidColorBrush(Colors.FromArgb(255,99,99,99));
    }

    // No need to implement converting back on a one-way binding 
    public object ConvertBack(object value, Type targetType, 
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

コントロールに対応するリソースに ValidToColorConverter を静的リソースとして追加

 <DataTemplate.Resources>
  <local:ValidToColorConverter x:Key="ValidToColorConverter" />
</DataTemplate.Resources>

注 - ページの名前空間に local を追加する必要があります (コンバーターが定義されている名前空間に対応)

チェックボックスのコンバーターを参照してください

<CheckBox Margin="0,0,3,0" Foreground={Binding Valid, Converter={StaticResource ValidToColorConverter}} x:Name="CheckBox">
于 2012-11-26T15:58:18.393 に答える