Tenho duas caixas de seleção em XAML. Quando a primeira estiver desmarcada, quero que a segunda também esteja. Mas quando a primeira estiver marcada, não quero que nada aconteça com a segunda. Também quero que ambas as caixas de seleção estejam marcadas por padrão. Isso parece ser muito simples com um DataTrigger
, mas não consigo entender. Sei que seria trivial fazer isso em código com manipuladores de eventos, mas eu queria fazer em XAML. Aqui está o que eu tenho:
<CheckBox Name="CheckBox1" Content="CheckBox1" IsChecked="True" />
<CheckBox Name="CheckBox2" Content="CheckBox2">
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="CheckBox.IsChecked" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=CheckBox1, Path=IsChecked}" Value="False">
<Setter Property="CheckBox.IsChecked" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
Ambas as caixas de seleção começam marcadas e, quando desmarco a caixa de seleção1, a caixa de seleção2 também é desmarcada, corretamente. Mas quando marco a caixa de seleção1, a caixa de seleção2 também é marcada incorretamente. Tentei várias variações disso, sem sucesso. Se eu remover a primeira, Setter
funciona corretamente, mas a caixa de seleção2 não começa marcada.
Você pode tentar o contrário usando o gatilho de evento diretamente do CheckBox1:
Alternativamente, se você quiser que isso pareça mais limpo, você pode explorar: Pacotes Microsoft.Xaml.Behaviors.* .
O problema com sua solução foi que o <Setter../> inicial que você usou para definir o valor inicial de CheckBox estava funcionando repetidamente junto com o DataTrigger.