C# 如何将组合框值设置为它们包含的默认值?

C# 如何将组合框值设置为它们包含的默认值?,c#,windows-store-apps,C#,Windows Store Apps,我试过这两种方法: comboBoxToHour.SelectedValue = comboBoxToHour.Items.IndexOf("11"); comboBoxToHour.SelectedIndex = comboBoxToHour.Items.IndexOf("11"); …但两者都不起作用,事实上,这也不起作用: comboBoxFromHour.SelectedValue = "11"; ……这也不是: comboBoxFromHour.SelectedIndex = 12

我试过这两种方法:

comboBoxToHour.SelectedValue = comboBoxToHour.Items.IndexOf("11");
comboBoxToHour.SelectedIndex = comboBoxToHour.Items.IndexOf("11");
…但两者都不起作用,事实上,这也不起作用:

comboBoxFromHour.SelectedValue = "11";
……这也不是:

comboBoxFromHour.SelectedIndex = 12;
…我觉得很奇怪

更新 我尝试了罗斯建议的修复方法,但有以下几点:

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 消息=对象引用未设置为对象的实例。“

…在分配给项目的行上

然而,这:

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

…有效。

也许您想使用
FindString
来编制索引:

comboBoxToHour.FindString("Name of a item")
乙二醇

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

comboBoxToHour.SelectedValue = "5";

也许您想使用
FindString
来编制索引:

comboBoxToHour.FindString("Name of a item")
乙二醇

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

comboBoxToHour.SelectedValue = "5";

看起来您没有使用viewmodel,因此.Items是ComboBoxItem的列表。您要求将comboboxitem与无法找到的字符串进行比较,因此将所选索引选择为-1

此代码可以实现您想要的:-

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

希望这会有所帮助。

看起来您没有使用viewmodel,因此.Items是ComboBoxItem的列表。您要求将comboboxitem与无法找到的字符串进行比较,因此将所选索引选择为-1

此代码可以实现您想要的:-

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

希望这会有所帮助。

要显示组合框的第一项:

列表模式选项=新建列表(){--选择模式--“,”驾驶“,”步行“,”交通“}

comboBoxOptions.ItemsSource=ModeOptions


comboBoxOptions.SelectedItem=ModeOptions[0]

要显示组合框的第一项:

列表模式选项=新建列表(){--选择模式--“,”驾驶“,”步行“,”交通“}

comboBoxOptions.ItemsSource=ModeOptions


comboBoxOptions.SelectedItem=ModeOptions[0]

没有FIndString,显然,对于Windows应用商店appshmm中的C#good point(抱歉我忽略了该标记-我的坏),请尝试此线程没有FIndString,显然,对于Windows应用商店appshmm中的C#good point(抱歉我忽略了该标记-我的坏),请尝试此线程