2011-02-11 24 views
4

私は国のリストを持つXMLファイルを持っています。私はxamlのXMLDataProviderを使ってコンボボックスのItemsSourceをバインドします。私はまた、選択した値をバインドしたいプロパティを持つviewModelを持っています。私はXMLProviderはのためのDataContextをSEに持っていたしかしWPF ComboBox XMLバインディングとViewModelバインディング?

SelectedValuePath="Country"

SelectedValue="{Binding local:Project.ProjectInfo.CompanyCountry}"

:私はローカル名前空間を使用してのviewmodelにバインドしようとしました。

viewModelでバインディングを使用する方法はありますか?

ありがとうございます。

+0

viewModelをDataContextとして設定しますか? – Snowbear

答えて

0

ViewModelを.Resourcesに入れてバインドしますか?

<UserControl .... xmlns:local="Project"> 
    <UserControl.Resources> 
     <local:ProjectInfo x:key="ProjectInfo"/> 
    </UserControl.Resources> 
    <UserControl.DataContext> 
     <XmlObjectDataProvider ... /> 
    </UserControl.DataContext> 
    <ComboBox ItemsSource="{Binding}" SelectedValuePath="Country" SelectedValue="{Binding CompanyCountry,Source={StaticResource ProjectInfo}}"/> 

HTH。基本的に、2つのデータソースがあります.1つはデータコンテキストに、もう1つはリソースにあります。

編集:必要に応じて2つを切り替えることができますが、それは問題ではありません。リソースには、必要なだけ多くのデータソースを配置できます。

+0

完璧に働いた、ありがとう!あなたのコメントをupvoteしようとしました。 – jeremywho

+0

@jeremywho:これはうまくいかなかったので、投票の下にある左側のチェックマークのアウトラインをクリックすることで、これを回答として受け入れるべきです。 –

0

ViewModelがビューのパブリックプロパティである場合、ビューに名前を付けてそのようにアクセスできます。

<Window Name="Window" 
     ...> 

<ComboBox SelectedValue="{Binding ElementName=Window, Path=ViewModel.Property}" ... /> 

...などです。

関連する問題