如何将我的comboBox值设置为它们包含的默认值?

时间:2012-12-19 01:50:17

标签: c# windows-store-apps

我已尝试过这两种方法:

comboBoxToHour.SelectedValue = comboBoxToHour.Items.IndexOf("11");
comboBoxToHour.SelectedIndex = comboBoxToHour.Items.IndexOf("11");

......并且两者都不起作用,事实上,这两者都不起作用:

comboBoxFromHour.SelectedValue = "11";

......也不是这样:

comboBoxFromHour.SelectedIndex = 12;

...我觉得很奇怪。

更新

我试过Ross'建议修复,但有这个:

if (App.roamingSettings.Values.ContainsKey("FromMonthSection1"))
{
    if (comboBoxFromMonth.Items != null)
    {
        var item = comboBoxFromMonth.Items.FirstOrDefault(p => (p as ComboBoxItem).Content.ToString() == App.roamingSettings.Values["FromMonthSection1"].ToString());

...我得到了,"对象引用未设置为对象的实例。"在最后一行。

更新2

事实证明,一种简单的方法毕竟是有效的。事实证明:

if (App.roamingSettings.Values.ContainsKey("FromMonthSection1"))
{
    if (comboBoxFromMonth != null)
    {
        var item = comboBoxFromMonth.Items.FirstOrDefault(p => (p as ComboBoxItem).Content.ToString() == App.roamingSettings.Values["FromMonthSection1"].ToString());
        if (item != null)
        {
            comboBoxFromMonth.SelectedItem = item;
        }
    }
}

...失败," System.NullReferenceException未被用户代码处理   的HResult = -2147467261   Message =对象引用未设置为对象的实例。"

...在分配给项目的行上。

但是,这个:

if ((App.roamingSettings.Values.ContainsKey("FromMonthSection1")) &&
    (!string.IsNullOrWhiteSpace(App.roamingSettings.Values["FromMonthSection1"].ToString())))
{
    comboBoxFromMonth.SelectedItem = App.roamingSettings.Values["FromMonthSection1"].ToString();
}

...作品。

3 个答案:

答案 0 :(得分:3)

也许您想使用FindString来训练索引:

comboBoxToHour.FindString("Name of a item")

例如

comboBoxToHour.DisplayMember = "Name";
comboBoxToHour.ValueMember = "Value";
comboBoxToHour.DataSource = aList; 
comboBoxToHour.SelectedIndex = comboBoxToHour.FindString("Name of a item")

或者因为我将组合框绑定到数据源,我可以使用SelectedValue:

comboBoxToHour.SelectedValue = "5";

答案 1 :(得分:1)

看起来你没有使用viewmodel所以.Items是ComboBoxItem的列表。你基本上要求将一个组合框与一个它找不到的字符串进行比较,所以它选择了所选索引为-1;

此代码可以实现您的目标: -

var item = comboBoxToHour.Items.FirstOrDefault(p => (p as ComboBoxItem).Content.ToString() == "4");
if (item != null)
{
    comboBoxToHour.SelectedItem = item;
}

希望这会有所帮助。

答案 2 :(得分:1)

显示组合框的第一项:

List ModeOptions = new List(){“ - 选择模式 - ”,“驾驶”,“行走”,“过境”};

comboBoxOptions.ItemsSource = ModeOptions;

comboBoxOptions.SelectedItem = ModeOptions [0];