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 はまだ null です。

4

3 に答える 3

0

あなたは に縛らSelectedItemれていませんStopEventVariable。次の構文を使用します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 に答える
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 に答える