1

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

<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;

直到现在,一切都可以正常工作。现在我的问题是。在我的对象(日志)存储了值之后,下一次,当我显示这个用户控制器时,我希望组合框可以自动显示这个值,我尝试在用户控制器的构造函数中的以下代码中做到这一点,但不能工作:</ p>

stopEventCombobox.SelectedItem = log.StopEventVariable;

分配后,stopEventCombobox.SelectedItem 仍然为空。

4

3 回答 3

0

如果你的意思是从后面的代码绑定,这就是你必须做的:

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

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

pvVarList.StopEventVariable = someItemsCollection[0];

于 2013-03-27T11:56:08.673 回答
0

你没有绑定SelectedItemStopEventVariable使用以下语法:SelectedItem="{Binding StopEventVariable}".

还要确保StopEventVariable是一个属性。

于 2013-03-27T07:28:47.613 回答
0

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

<ComboBox x:Name="stopEventCombobox" 
          ItemsSource="{Binding}" 
          DisplayMemberPath ="EventVariableComboxItem" 
          SelectedItem="{Binding StopEventVariable}"/>
于 2013-03-27T07:28:59.987 回答