0

ウィンドウには、各従業員名に隣接するチェックボックスを持つ従業員タイプのリストにバインドされ、個別に選択できるリスボックスが表示されます。

「すべて選択」オプションを備えた別のコントロールチェックボックスを取得しました。

すべて選択チェックボックスの isChecked を viewModel のプロパティIsSelectAllCheckedにバインドすることで、「すべて選択」「選択なし」を簡単に実行できます。

ただし、select all オプションが true で、lisbox 内のすべての従業員アイテムがチェックされている場合..アイテムの 1 つがチェックされていない場合、select all オプションのチェックボックスからチェックを削除するにはどうすればよいですか。

 <StackPanel Grid.Row="1">
        <CheckBox Margin="20,15,0,15" IsChecked="{Binding Path=IsSelectAllChecked}">
            <TextBlock VerticalAlignment="Center" Text="Select All" />
    </CheckBox>

誰でもアドバイスできますか

4

2 に答える 2

0

従業員のチェックボックスには、従業員ビューモデルのプロパティIsCheckedへのバインディングも必要です。IsSelectedそのプロパティのセッターで、変更IsSelectAllCheckedが必要かどうかを評価できます。

于 2012-09-20T14:59:45.870 に答える
0

これが私がそれを行う方法です:

Select AllCheckboxとバインドされたプロパティは次のとおりです。

<CheckBox Margin="20,15,0,15" Content="Select all"
     IsChecked="{Binding Path=IsSelectAllChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

public bool IsSelectAllChecked
{
  get
  {
     return isSelectAllChecked
  }
  set
  {
    isSelectAllChecked = value;
    // Do some code here to turn all selected booleans to true
    SelectAll();
    OnPropertyChanged("IsSelectAllChecked"); // Fire OnPropertyChanged event, important for TwoWay Binding!!
}

Bindingfor yourCheckBoxTwoWayモードになり、 with であることに注意してくださいUpdateSourceTrigger=PropertyChanged。これにより、次のことが可能になります。

  • バインドされたプロパティの値をコードから変更する ( TwoWay)
  • CheckBox値が更新されたときに状態を更新する( UpdateSourceTrigger=PropertyChanged)

次: チェックボックスの 1 つと、コード内の同等のものを次に示します。

<CheckBox  Content="Select one"
     IsChecked="{Binding Path=OneOfYourBools, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

public bool OneOfYourBools
{
  get
  {
     return oneOfYourBools;
  }
  set
  {
    oneOfYourBools = value;
    // If the isAllSelected was true, turn it to false!
    if (this.IsSelectAllChecked)
    {
       this.IsSelectAllChecked = false;
    }
    OnPropertyChanged("OneOfYourBools"); // Fire OnPropertyChanged event, important for TwoWay Binding!!
}

そして、これはトリックを行う必要があります: 1 つboolが更新されると、selectAllbool も更新され、その逆も同様です。

于 2012-09-20T15:11:27.950 に答える