0

ComboBox の SelectedItem のプロパティにバインドするための正しい構文を見つけるのに苦労しています。これは、バインディングに使用しようとしている XAML です。SelectedItem.Mode が表示される場所は、私が苦労しているアイデアです。CurrentMode は ViewModel にあり、SelectedItem.Mode と同じタイプであることに注意してください。

<ComboBox SelectedItem.Mode="{Binding Path=CurrentMode, Mode=TwoWays}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding ImageSource}"/>
                </DataTemplate>
            </ComboBox.ItemTemplate>
            <local:ModeItem Mode="Free" ImageSource="pencil.png"/>
            <local:ModeItem Mode="Arrow" ImageSource="arrow.png"/>

        </ComboBox>

local:ModeItem は次のようになります

    public class ModeItem : DependencyObject, INotifyPropertyChanged
{
    public static readonly DependencyProperty ModeProperty = DependencyProperty.Register("Mode", typeof(AnnotationMode), typeof(ModeItem));
    public AnnotationMode Mode
    {
        get { return (AnnotationMode)GetValue(ModeProperty); }
        set { SetValue(ModeProperty, value); }
    }
    public string ImageSource { get; set; }

    public event PropertyChangedEventHandler PropertyChanged;
}

MVVM を使用して、ViewModel の AnnotationMode (CurrentMode) を ComboBox の SelectedItem の AnnotationMode (Mode) にバインドしようとしています。

4

1 に答える 1

0

これを行うだけ SelectedItem="{Binding CurrentMode}

実行しているこの余分なことをすべて実行する必要はありません。注コンボボックスのデータコンテキストがビューモデルを指すようにする必要があります。

編集:-これを行うことができるはずです

SelectedValue="{Binding CurrentMode, Mode=TwoWay}" 
SelectedValuePath="Mode" 
于 2013-02-28T17:54:47.777 に答える