У меня есть эта проблема, у меня есть приложение Silverlight, написанное с использованием MVVM. Мне нужно создать DataForm, которая привязана к свойству на ViewModel, и я хочу добавить ComboBox и заполнить его значениями из другой коллекции в той же ViewModel.
Код:
<dataFormToolkit:DataForm CurrentItem="{Binding NewUser, Mode=TwoWay}" AutoGenerateFields="False" Height="298">
<dataFormToolkit:DataForm.EditTemplate>
<DataTemplate>
<StackPanel>
<dataFormToolkit:DataField Label="Email">
<TextBox Text="{Binding Email, Mode=TwoWay}"/>
</dataFormToolkit:DataField>
<dataFormToolkit:DataField Label="Język">
<ComboBox ItemsSource="{Binding Path=Languages, Mode=TwoWay}"/>
</dataFormToolkit:DataField>
</StackPanel>
</DataTemplate>
</dataFormToolkit:DataForm.EditTemplate>
</dataFormToolkit:DataForm>
Все это обрабатывается NewAccountVM, который имеет следующие свойства:
private User newUser;
public User NewUser {
get
{
return newUser;
}
set
{
if (value != newUser)
{
newUser = value;
RaisePropertyChanged("NewUser");
}
}
}
private ObservableCollection<Language> languages;
public ObservableCollection<Language> Languages
{
get { return languages; }
set
{
if (languages != value)
{
languages = value;
RaisePropertyChanged("Languages");
}
}
}
Теперь все это работает, кроме добавления ItemsSource в ComboBox. Я нашел много примеров, показывающих, как заполнять CB в CodeBehind, но, как я уже сказал, я хочу сделать это в стиле MVVM :)
Я понимаю, что ComboBox унаследовал DataContext от DataForm, и этот ItemsSource = "{Binding Path = Languages, Mode = TwoWay}" не будет работать, но я понятия не имею, как достичь своей цели.
Может ли кто-нибудь мне помочь?