您需要將複選框的IsChecked屬性綁定到每個項目的支持對象上的另一個屬性。即具有名稱的類型應公開一個布爾屬性IsSelected。
數據綁定會適當地更新IsSelected屬性,這對您在代碼中訪問會很容易。例如您可以遍歷該列表並過濾所有具有IsSelected = false的項目。
代碼示例
XAML
<StackPanel>
<ComboBox ItemsSource="{Binding Items}">
<ComboBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button Click="EvaluateSelectedItems">Show Selected</Button>
<TextBlock>Selected Items</TextBlock>
<ListBox ItemsSource="{Binding SelectedItems}" DisplayMemberPath="Name" Background="AliceBlue"/>
</StackPanel>
代碼隱藏
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
Items = new List<ItemVM>
{
new ItemVM {IsSelected = false, Name = "Firefox"},
new ItemVM {IsSelected = false, Name = "Chrome"},
new ItemVM {IsSelected = false, Name = "IE"}
};
}
public IEnumerable<ItemVM> Items { get; set; }
private IEnumerable<ItemVM> _selectedItems;
public IEnumerable<ItemVM> SelectedItems
{
get { return _selectedItems; }
set
{
_selectedItems = value;
if (PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedItems"));
}
}
private void EvaluateSelectedItems(object sender, RoutedEventArgs e)
{
SelectedItems = Items.Where(item => item.IsSelected);
}
你是什麼意思與 「值存儲的複選框中的內容價值」? – Osiris76 2011-06-09 15:04:48
我假設你的意思是你需要用戶檢查/選擇的所有名稱。 – Gishu 2011-06-09 15:05:54
複選框的文本值存儲爲內容。 – 2011-06-09 15:08:08