我的应用程序中有大量的ComboBox。它们都需要从空白处开始,因此它们的默认选择索引始终设置为-1,并且这些框预先填充了硬编码选项。提交表单时,某些框不需要选择项目,因此允许保留为空(并保持索引为-1)。
目前我使用以下内容检查是否已选择某个项目,并指定其内容值(如果有)。
if (ComboBox.SelectedIndex >= 0)
{
MyObject.Val1 = ((ComboBoxItem)ComboBox.Items[ComboBox.SelectedIndex]).Content.ToString();
}
显然我不能简单地使用
((ComboBoxItem)ComboBox.Items[ComboBox.SelectedIndex]).Content.ToString();
如果没有选择任何值,就会自行抛出ArgumentOutOfRangeException
有没有更优雅的方法来做到这一点,还是我每次需要时都坚持运行这个限定符?
修改
我确实有想法使用像这样的功能
public string ComboChecker(ComboBox box, int index)
{
if (index >= 0)
{
return ((ComboBoxItem)box.Items[box.SelectedIndex]).Content.ToString();
}
else
{
return "";
}
}
这样我每次只需MyObject.Val = ComboCheck(ComboBox,ComboBox.SelectedIndex)
代替
答案 0 :(得分:2)
public static void GetSelectedValue(ComboBox c, Action<String> gotValue) {
if( c.SelectedIndex >= 0 ) {
ComboBoxItem item = c.Items[ c.SelectedIndex ];
gotValue( item.Content.ToString() );
}
}
用法:
GetSelectedValue( MyComboBox, v => MyObject.Val1 = v );