我有这个问题,我有使用 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 样式中执行此操作:) 我明白,ComboBox 从 DataForm 继承 DataContext,并且这个 ItemsSource="{Binding Path=Languages, Mode =TwoWay}" 不起作用,但我不知道如何实现我的目标。
有人可以帮助我吗?