mic*_*jas 2 data-binding silverlight combobox mvvm dataform
我有这个问题,我有使用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>
Run Code Online (Sandbox Code Playgroud)
所有这些都由具有以下属性的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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,除了将ItemSource添加到ComboBox之外,所有这些都有效.我发现很多例子显示如何在CodeBehind中填充CB,但就像我说我想在MVVM-Style中这样做:)我明白,ComboBox从DataForm继承了DataContext,而这个ItemsSource ="{Binding Path = Languages,Mode = TwoWay}"不起作用,但我不知道如何实现我的目标.
有人能帮助我吗?
1)将视图模型声明为资源部分中的视图.
<UserControl.Resources>
<local:MyViewModel x:Key="myViewModel" />
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
2)将ComboBox绑定到viewmodel上的collection属性.
<ComboBox ItemsSource="{Binding Path=Languages,
Source={StaticResource myViewModel},
Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10686 次 |
| 最近记录: |