wpf TreeView CheckBox Элемент ForeGround Цвет не может измениться, когда он отключен? - PullRequest
1 голос
/ 11 мая 2011

Это мой стиль xaml для Treebox CheckBox Item. Я использую 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>

Если я установил Enable в False из ViewModel, цвет не изменится на красный, но если я установлю в true, он изменится на зеленый. Зачем? Пеласе советую.

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Код должен работать, посмотрите / попробуйте это:

<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>

Возможно, что-то не так с привязкой?

0 голосов
/ 11 мая 2011

Попробуйте это

  <Setter Property = "Foreground" Value = "Red"/>
   <Style.Triggers>
       <Trigger Property="IsEnabled" Value="True">
             <Setter Property="Foreground" Value="Green" />
       </Trigger>
    </Style.Triggers>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...