что-то еще происходит в вашем проекте.
Я попробовал следующее:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Name="Window"
SizeToContent="WidthAndHeight">
<StackPanel>
<CheckBox>
some text here
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="IsChecked" Value="False" />
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedIndex, ElementName=combo, Mode=OneWay}" Value="2">
<Setter Property="IsChecked" Value="True" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
<ComboBox Name="combo">
<TextBlock>item 1</TextBlock>
<TextBlock>item 2</TextBlock>
<TextBlock>item 3</TextBlock>
<TextBlock>item 4</TextBlock>
<TextBlock>item 5</TextBlock>
</ComboBox>
</StackPanel>
</Window>
Так очень просто. Цель здесь - установить точно такие же значения, как у вас, для IsEnable и IsChecked, когда элемент 3 выбран в поле со списком
и это работает как шарм. То есть: пользователь устанавливает / снимает флажок по своему усмотрению, затем, когда он выбирает «элемент 3» в поле со списком, флажок проверяется и отключается. Если он снова меняет выбранный элемент в поле со списком, флажок снят и повторно включен, и он может проверять / снимать флажок снова и снова.
Так что для вас что-то еще происходит. То, что вы написали, должно работать.
Редактировать: Что касается вашего комментария, я протестировал версию 3.5 вместо 4.0, которую я впервые использовал, и действительно мог воспроизвести вашу проблему, так что это явно ошибка, исправленная в 4.0 версия .net Framework.