WPF ComboBox XML Binding И ViewModel Binding? - PullRequest
4 голосов
/ 11 февраля 2011

У меня есть XML-файл со списком стран.Я использую XMLDataProvider в xaml, чтобы связать ItemsSource комбинированного списка.У меня также есть viewModel со свойством, к которому я хотел привязать выбранное значение.Я пытался привязаться к модели представления, используя локальное пространство имен:

SelectedValuePath="Country"

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

Однако мне пришлось задать DataContext для xmlProvider.

Есть ли способ заставить привязку работать в viewModel?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2011

Поместите вашу 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}}"/>

НТН. В основном у вас есть два источника данных - один в текстовом тексте и другой в ваших ресурсах.

РЕДАКТИРОВАТЬ: Вы можете переключить два, если это необходимо, это не имеет значения. В ваших ресурсах может быть столько источников данных, сколько вам нужно.

0 голосов
/ 11 февраля 2011

Если ваша ViewModel является публичной собственностью представления, вы можете назвать свое представление и получить к нему доступ таким образом.

<Window Name="Window"
        ...>

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

... или что-то в этом роде.

...