我正在创建一个WPF应用程序。我有一个带有复选框项目的列表框,我需要能够检索复选框的值是什么(用户是否检查过它们)。这是我的MainWindow代码。
<ListBox Name="lbFacilities" Grid.Row="3" Grid.Column="1" Height="85">
<CheckBox>Hiking</CheckBox>
<CheckBox>Swimming</CheckBox>
<CheckBox>Skiing</CheckBox>
<CheckBox>Camping</CheckBox>
<CheckBox>Lodging</CheckBox>
</ListBox>
如何将这些复选框项目(徒步旅行,游泳等)作为bool数据类型添加到我的C#代码中?
更新 - 我尝试了“简单”的方法,认为它对我有用,但事实并非如此。 Justin说它虽然对他有用,所以现在这是我的代码。
<ListBox Name="lbFacilities" Grid.Row="3" Grid.Column="1" Height="85">
<CheckBox Name="chbHiking">Hiking</CheckBox>
<CheckBox Name="chbSwimming">Swimming</CheckBox>
<CheckBox Name="chbSkiing">Skiing</CheckBox>
<CheckBox Name="chbCamping">Camping</CheckBox>
<CheckBox Name="chbLodging">Lodging</CheckBox>
</ListBox>
然后在我的C#代码中
bool isHiking;
isHiking = chbHiking.IsChecked;
第二行分配isHiking给出错误,说chbHiking不存在。
答案 0 :(得分:2)
查看data binding和data templating,您需要创建一个具有布尔属性和要显示的字符串的项列表,然后将ListBox.ItemsSource
绑定到该项并创建一个ItemTemplate
创建了CheckBoxes
IsChecked
和Content
绑定到您的商品。
然后,您只需查看源集合中的属性值即可。
答案 1 :(得分:0)
您有两种选择。
1)轻松
<CheckBox Name="cbHiking">Hiking</CheckBox>
在代码背后
bool isHiking = cbHiking.IsChecked;
2)更难 - 数据绑定
<CheckBox Name="cbHiking" IsChecked="{Binding Path=MyHiking}">Hiking</CheckBox>
在代码背后(通常是视图模型)
private bool _myhiking;
public bool MyHiking {get {return _myhiking;} set {_myhiking = value; //DoPropertyCHanged}
请注意,虽然我不建议这样做生产代码。我第一眼就错过了他们在列表框中的事实。最好的选择是使用CheckedListBox,然后将其绑定到包含描述(名称)的对象集合以及是否选中它们的值。
答案 2 :(得分:0)
我猜你只是想知道他们是否被检查过。如果是这样,那么你可以这样做:
foreach (var item in lbFacilities.Items)
{
CheckBox cb = item as CheckBox;
bool thisCBCheckedValue = cb.IsChecked;
}