0

コンボボックスがあり、ItemsSource と SelectedItem をバインドします

<ComboBox DisplayMemberPath="Name"  ItemsSource="{Binding OrganizationalPostCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  SelectedItem="{Binding OrganizationalPost,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Left" Width="230" Margin="5" />

そしてViewModelで

OrganizationalPost _organizationalPost;
public OrganizationalPost OrganizationalPost
{
    get { return _organizationalPost; }
    set
    {
        if (value != _organizationalPost)
        {
            _organizationalPost = value;
            RaisePropertyChanged("OrganizationalPost");
        }
    }
}

ICollectionView _organizationalPostCollection;
public ICollectionView OrganizationalPostCollection
{
    get { return _organizationalPostCollection; }
    set
    {
        if (value != _organizationalPostCollection)
        {
            _organizationalPostCollection = value;
            RaisePropertyChanged("OrganizationalPostCollection");
        }
    }
}

そしてコンストラクターで

OrganizationalPostCollection = CollectionViewSource.GetDefaultView(db.OrganizationalPost.ToList());
OrganizationalPost = SelectedUser.OrganizationalPost;

OrganizationalPost には値がありますが、SelectedItem には設定されません。

4

1 に答える 1

4

プロパティの値を選択しSelectedItemて UI を更新するには、同じコントロールのとして設定されているコレクションから項目を設定する必要があります。ItemsSource

OrganizationalPost = OrganizationalPostCollection[selectedItemIndex];

または、クラスに一意に識別可能なプロパティがある場合:

OrganizationalPost = OrganizationalPostCollection.Where(p => p.Id == itemToSelect.Id).
Single();
于 2013-08-20T08:14:45.177 に答える