0

这两个我都试过了:

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();
}

...作品。

4

3 回答 3

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";
于 2012-12-19T01:54:12.367 回答
1

看起来您没有使用视图模型,因此 .Items 是 ComboBoxItem 的列表。您基本上要求将组合框项与找不到的字符串进行比较,因此将所选索引选择为-1;

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

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

希望这会有所帮助。

于 2012-12-20T11:26:21.130 回答
1

要显示组合框的第一项:

List ModeOptions=new List() {"--选择模式--","Driving","Walking","Transit"};

comboBoxOptions.ItemsSource = ModeOptions;

comboBoxOptions.SelectedItem = ModeOptions[0];

于 2015-06-02T17:55:58.453 回答