【发布时间】:2011-06-20 11:01:38
【问题描述】:
有 2 个列表 - AvailableItems 和 SelectedItems。
AvailableItems 显示在一个 ListBox 中,每个 ListBoxItem 都包含一个 CheckBox。目的是如果绑定的项目在 SelectedItems 中,则检查 CheckBox。
我可以在不处理代码隐藏中的 Checked 和 Unchecked 并且不向我的项目类添加 IsSelected 属性的情况下实现此目的吗?
这是目前的 XAML:
<ListBox Name="ListBox1" ItemsSource="{Binding Path=AvailableItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<CheckBox Name="cb1"></CheckBox>
<TextBlock Text="{Binding}"></TextBlock>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
和代码隐藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
_availableItems.Add(Colors.Red);
_availableItems.Add(Colors.Green);
_availableItems.Add(Colors.Blue);
_selectedItems.Add(Colors.Green);
this.DataContext = this;
}
ObservableCollection<Color> _selectedItems = new ObservableCollection<Color>();
public ObservableCollection<Color> SelectedItems
{
get { return _selectedItems; }
set { _selectedItems = value; }
}
ObservableCollection<Color> _availableItems = new ObservableCollection<Color>();
public ObservableCollection<Color> AvailableItems
{
get { return _availableItems; }
set { _availableItems = value; }
}
}
上面的xaml/code可以直接复制到新的WPF项目中进行测试。
【问题讨论】:
标签: .net wpf data-binding checkbox observablecollection