复选框在wpf中禁用和启用

时间:2015-06-24 16:29:16

标签: wpf xaml mvvm

在我的下面代码中,我有2个复选框chkQAReviewMandatory和chkIsAnsMandatory。我的要求是当我检查chkQAReviewMandatory复选框然后自动我需要复选框chkIsAnsMandatory被选中和禁用,如果未选中chkQAReviewMandatory则取消选中chkIsAnsMandatory并启用它。

      <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Margin="5,15,5,0">
                        <CheckBox x:Name="chkQAReviewMandatory" Content="QA Review Mandatory" Grid.Row="1" Grid.Column="0" Margin="0,5,0,0" 
                                  IsChecked="{Binding IsQAReviewMandatory}"/>
                        <StackPanel Orientation="Horizontal" Margin="20,0,0,0">
                        <StackPanel.Style>
                            <Style TargetType="StackPanel">
                            <Setter Property="Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=chkQAReviewMandatory, Path=IsChecked}" Value="True">
                                    <Setter Property="Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                        </StackPanel.Style>
                                <Label x:Name="lblMax" Content="QA Max Point" Height="20" VerticalAlignment="Center" Margin="0,5,5,0"></Label>
                                <local:NumericTextBox Width="50"
                                                             MaxLength="1"
                                                             Height="25"
                                                             VerticalAlignment="Top"
                                                             Text="{Binding MaximumQAPoints}" />
                    </StackPanel>
                    </StackPanel>

                     <CheckBox Content="Is Answer Mandatory" 
                          Grid.Row="2" 
                          HorizontalAlignment="Left" 
                          Margin="5,12,0,0" 
                          IsChecked="{Binding IsAnswerMandatory}" >
                        <CheckBox.Style>
                            <Style TargetType="CheckBox">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=chkQAReviewMandatory,Path=IsChecked}" Value="True">
                                        <Setter Property="IsChecked" Value="True"/>
                                        <Setter Property="IsEnabled" Value="False"/>
                                        <Setter Property="Foreground" Value="White"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding ElementName=chkQAReviewMandatory,Path=IsChecked}" Value="False">
                                        <Setter Property="IsChecked" Value="False"/>
                                        <Setter Property="IsEnabled" Value="True"/>
                                        <Setter Property="Foreground" Value="White"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </CheckBox.Style>
                    </CheckBox>

1 个答案:

答案 0 :(得分:2)

有两种方法:

  1. 对于一个控件,将IsEnabledIsChecked属性绑定到ViewModel中的属性。在另一个控件上,将IsEnabled绑定到IsChecked。这意味着如果勾选了一个复选框,则另一个复选框变为启用状态。
  2. 您不仅可以绑定到代码中的属性,还可以绑定到其他控件上的属性。使用x:Name设置控件的名称,然后您可以绑定到该控件上的任何属性。
  3. 至于如何执行此操作的详细信息,请使用我的答案向Google查找关键字。祝好运!