我正在编写一个程序,其中我有一个由一系列复选框组成的组合框。 用户可以根据需要选择多个复选框。在taht之后,当他点击一个按钮时,我想检查复选框以查看哪些是选中的,哪些不是。
但我不知道该怎么做。我尝试了很多方法,但没有任何方法可以让我回报财产的价值。实际上,我无法从代码中获取绑定属性。这是代码:
在WPF中:
<ComboBox x:Name="month_comboBox" Margin="349,107,0,0" Height="22" VerticalAlignment="Top" Visibility="Hidden">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Width="20" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}"/>
<TextBlock Text="{Binding Path=month_Name}" Width="100" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在.cs文件中,这是加载combobx的代码:
在主类中有这种方法:
private void LoadMonths()
{
MonthList ML = new MonthList();
month_comboBox.ItemsSource = ML.Months;
month_comboBox.SelectedIndex = 0;
}
并且元素还有这两个类:
public class MonthList
{
ObservableCollection<Month> _Months = new ObservableCollection<Month>();
public MonthList()
{
_Months.Add(new Month { month_Name = "every month" });
_Months.Add(new Month { month_Name = "january" });
_Months.Add(new Month { month_Name = "february" });
_Months.Add(new Month { month_Name = "march" });
_Months.Add(new Month { month_Name = "april" });
_Months.Add(new Month { month_Name = "may" });
_Months.Add(new Month { month_Name = "june" });
_Months.Add(new Month { month_Name = "july" });
_Months.Add(new Month { month_Name = "august" });
_Months.Add(new Month { month_Name = "september" });
_Months.Add(new Month { month_Name = "october" });
_Months.Add(new Month { month_Name = "november" });
_Months.Add(new Month { month_Name = "december" });
}
public ObservableCollection<Month> Months { get { return _Months; } }
}
public class Month
{
private string monthName;
public bool IsSelected {
get { return IsSelected; }
set;
}
public string month_Name
{
get { return monthName; }
set { monthName = value; }
}
}
现在,我想要知道的是,对于组合框中的每个复选框,是否选中了复选框。
我有这个,但我不知道用什么指令来获取财产价值:
for (int i = 0; i < month_comboBox.Items.Count; i++) {
//Instruction missing here
}
我知道我必须使用类似的东西
month_comboBox.Items[i]
但我不知道我必须挂钩才能获得属性值。
谢谢大家
答案 0 :(得分:3)
这非常简单 - 像这样投射:
public void GetValues()
{
foreach(var item in month_comboBox.Items)
{
Month temp = item as Month;
bool isSelected = temp.IsSelected;
//continue here :)
}
}
您也可以使用模式匹配。
if (item is Month month)
{
var isSelected = month.IsSelected;
//continue here :)
}
或者可能是这样的:
public IEnumerable<Month> GetValues()
{
foreach(var item in month_comboBox.Items)
{
if(item is Month month) return month;
}
}
另请查看MVVM
here