我想在按钮点击时改变UserControls(我不会在这里复杂化,所以我只提到重要的部分).因此,想法是将这些UserControl的ViewModels绑定到ContentControl,然后使用DataTemplates将它们关联起来.这是代码:
<Window x:Class="Project.MainWindow">
<Window.Resources>
<DataTemplate DataType="{x:Type UserControl:ViewUserControlViewModel}" >
<UserControl:ViewUserControl/>
</DataTemplate>
<DataTemplate DataType="{x:Type UserControl:EditUserControlViewModel}" >
<UserControl:EditUserControl/>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl DataContext="{Binding UserControlViewModel}" />
<Button Content="View" Click="ChangeToView()"/>
<Button Content="Edit" Click="ChangeToEdit()"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
视图模型:
public class MainWindowViewModel : DependencyObject
{
public DependencyObject UserControlViewModel
{
get { return (DependencyObject)GetValue(UserControlViewModelProperty); }
set { SetValue(UserControlViewModelProperty, value); }
}
public static readonly DependencyProperty UserControlViewModelProperty =
DependencyProperty.Register("UserControlViewModel", typeof(DependencyObject), typeof(MainWindowViewModel), new PropertyMetadata());
public MainWindowViewModel()
{
UserControlViewModel = new EditUserControlViewModel();
}
}
Run Code Online (Sandbox Code Playgroud)
但这是一个问题.当我开始项目时,我只看到按钮而不是任何UserControls.我做错了什么?
LPL*_*LPL 11
如果您Window.DataContext正确设置MainWindowViewModel为此应该完成工作
<ContentControl Content="{Binding UserControlViewModel}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17038 次 |
| 最近记录: |