已选择检查ComboBoxItem的较短方法

时间:2016-12-01 12:39:53

标签: c# uwp

我的应用程序中有大量的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)代替

1 个答案:

答案 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 );