【发布时间】:2010-12-21 16:50:38
【问题描述】:
我有这个问题,我有使用 MVVM 编写的 Silverlight 应用程序。我需要创建绑定到 ViewModel 上的属性的 DataForm,我想添加 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 之外,所有这些都可以正常工作。我发现了很多例子,展示了如何在 CodeBehind 中填充 CB,但就像我说的那样,我想在 MVVM-Style 中做到这一点:) 我知道,ComboBox 从 DataForm 继承了 DataContext,这个 ItemsSource="{Binding Path=Languages, Mode=TwoWay}" 不起作用,但我不知道如何实现我的目标。
有人可以帮帮我吗?
【问题讨论】:
标签: silverlight data-binding mvvm combobox dataform