如何通过代码设置ComboBox选定项

时间:2013-03-27 07:15:12

标签: c# wpf binding combobox

在我的用户控件中,我定义了一个组合框,如下所示:

<GroupBox x:Name="stopEventGroup" Header="Test">
<ComboBox x:Name="stopEventCombobox" 
          ItemsSource="{Binding}" 
          DisplayMemberPath ="EventVariableComboxItem" 
          SelectedItem="StopEventVariable"/>
</GroupBox>

StopEventVariable是我的对象(日志)的属性。在代码部分中,我将其SelectionChanged事件绑定到处理程序方法:

stopEventCombobox.SelectionChanged += stopEventCombobox_SelectionChanged;

在内部处理程序中,我将其分配给我的对象的属性。

private void stopEventCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    selectedVar = (LogPublicVariableView)stopEventCombobox.SelectedItem;

    if ((log != null) && (selectedVar != null))
    {
        log.StopEventVariable = selectedVar.ExposedVariable;
    }
}

在这个构造函数的构造函数中,我绑定了组合框的父级的数据上下文:

stopEventGroup.DataContext = pvVarList;

到现在为止,一切都可行。现在我的问题是。在我的对象(日志)存储了值之后,下次当我显示这个用户控制器时,我想组合框可以自动显示这个值,我尝试在用户控制器的构造函数中的下面的代码中进行,但是可以&#39工作:

stopEventCombobox.SelectedItem = log.StopEventVariable;

分配后,stopEventCombobox.SelectedItem仍为空。

3 个答案:

答案 0 :(得分:0)

您尚未将SelectedItem绑定到StopEventVariable。使用以下语法:SelectedItem="{Binding StopEventVariable}"

同时确保StopEventVariable属性。

答案 1 :(得分:0)

将来自XAML本身的SelectedItem属性与源属性(StopEventVariable)绑定

<ComboBox x:Name="stopEventCombobox" 
          ItemsSource="{Binding}" 
          DisplayMemberPath ="EventVariableComboxItem" 
          SelectedItem="{Binding StopEventVariable}"/>

答案 2 :(得分:0)

如果你的意思是从代码后面绑定,那么你需要做的就是:

Binding b1 = new Binding("StopEventVariable");
b1.Source = pvVarList;
stopEventCombobox.SetBinding(ComboBox.SelectedItemProperty, b1);

然后你只需要设置属性StopEventVariable。 例如:

pvVarList.StopEventVariable = someItemsCollection [0];