我想通过选择带有“以上所有”的复选框名称来使所有复选框都被选中。复选框在列表框中。
<ListBox SelectionMode="Multiple"
BorderThickness="0"
ItemsSource="{Binding QuestionThreeSelection}"
SelectedItem="{Binding QuestionThreeSelection}"
Name="listBoxList"
SelectionChanged="listBoxList_SelectionChanged">
<ListBox.InputBindings>
<KeyBinding Command="ApplicationCommands.SelectAll"
Modifiers="Ctrl"
Key="A" />
</ListBox.InputBindings>
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Checked="CheckBox_Checked_1"
Content="{Binding SourceName}"
IsChecked="{Binding Path=IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>反码
private void CheckBox_Checked_1(object sender, RoutedEventArgs e)
{
var oo = listBoxList;
CheckBox cb = (CheckBox)sender;
//var w=e;
IEnumerable<AddSource> listallityem = ((IEnumerable<AddSource>)listBoxList.Items.SourceCollection).Where(r => r.IsSelected == false);
//IEnumerable<AddSource> listallityem1 = ((IEnumerable<AddSource>)listBoxList.Items.SourceCollection);
AddSource vv = cb.DataContext as AddSource;
if ((bool) cb.IsChecked)
{
}
if (vv.SourceName== "All of the above")
{
r = listBoxList.ItemsSource;
foreach (AddSource item in wer)
{
item.IsSelected = true; // false in case of unselect
}
}
}有人能建议一个方法吗?
发布于 2017-07-18 10:02:06
您可以为“以上所有”的Checked和Unchecked事件处理如下所示的CheckBox:
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
SelectAll(true);
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
SelectAll(false);
}
private void SelectAll(bool select)
{
var all = listBoxList.ItemsSource as IEnumerable<AddSource>;
if (all != null)
{
foreach (var source in all)
source.IsSelected = select;
}
}确保AddSource类实现了INotifyPropertyChanged,并在IsSelected属性的setter中引发了PropertyChanged事件。
https://stackoverflow.com/questions/45158314
复制相似问题