【问题标题】:wpf Treeview CheckBox Item ForeGround Color cannot Change when it is disabled?wpf Treeview CheckBox Item ForeGround Color在禁用时无法更改?
【发布时间】:2011-05-11 10:21:41
【问题描述】:

这是 Treeview CheckBox 项的我的 xaml 样式。我正在使用 Syncfusion Treeview。

<Style x:Key="contractListItemContainerStyle" TargetType="{x:Type syncfusion:TreeViewItemAdv}">
    <Setter Property="IsExpanded" Value="True" />
    <Setter Property="IsSelected" Value="{Binding IsInitiallySelected, Mode=OneTime}" />
    <Setter Property="KeyboardNavigation.AcceptsReturn" Value="True" />
    <Setter Property="IsEditable" Value="False" />

    <Setter Property="IsEnabled" Value="{Binding Enable}" />
    <Setter Property="Foreground" Value="Red" />
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Setter Property="Foreground" Value="Green" />
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Foreground" Value="Red" />
        </Trigger>
    </Style.Triggers>
</Style>

<HierarchicalDataTemplate x:Key="selectedContractsDataTemplate" ItemsSource="{Binding Children}" >
    <StackPanel Orientation="Horizontal">
        <CheckBox Margin="2,0,2,0"
             Focusable="False"
             IsChecked="{Binding Content.IsChecked}"
             VerticalAlignment="Center"  />
        <ContentPresenter Content="{Binding}" Margin="2,0"  />
    </StackPanel>
</HierarchicalDataTemplate>

如果我从 ViewModel 将 Enable 设置为 False,颜色不会变为红色,但如果我设置为 true,它会变为绿色。为什么?请多多指教。

【问题讨论】:

    标签: wpf c#-4.0 binding


    【解决方案1】:

    代码应该可以工作,看看/试试这个:

    <StackPanel>
        <CheckBox Name="chk" Content="check this...">
            <CheckBox.Style>
                <Style>
                    <Setter Property="CheckBox.Foreground" Value="Red" />
                    <Style.Triggers>
                        <Trigger Property="CheckBox.IsEnabled" Value="True">
                            <Setter Property="CheckBox.Foreground" Value="Green" />
                        </Trigger>
                        <Trigger Property="CheckBox.IsEnabled" Value="False">
                            <Setter Property="CheckBox.Foreground" Value="Red" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </CheckBox.Style>
        </CheckBox>
        <Button Content="press" Click="Button_Click"/>
    </StackPanel>
    

    可能是绑定有问题?

    【讨论】:

    • 绑定正在工作,我可以看到 checkbo 更改为禁用模式。只是颜色没有变化。
    【解决方案2】:

    试试这个

      <Setter Property = "Foreground" Value = "Red"/>
       <Style.Triggers>
           <Trigger Property="IsEnabled" Value="True">
                 <Setter Property="Foreground" Value="Green" />
           </Trigger>
        </Style.Triggers>
    

    【讨论】:

    • 仍然无法变为红色。
    • 你确定绑定没问题?
    • 当然,当我设置为 true 时,它​​可以变为绿色。同样基于这个绑定,我也改变了其他的内容。它也运行良好。
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多