Mvvm 将视图绑定到我的主窗口仅显示类型
我正在尝试将视图绑定到ContentControl。目前,它只显示类型(例如NameSpace.ViewModel.MainWindowViewModel) 虽然我会指出,但我不确定我是否正确处理了这个问题 我的简单设置是,我有一个视图(UserControl),它是空的,而不是一个控件(它只是为了视觉效果而放置的) 我的主窗口.xamlMvvm 将视图绑定到我的主窗口仅显示类型,mvvm,Mvvm,我正在尝试将视图绑定到ContentControl。目前,它只显示类型(例如NameSpace.ViewModel.MainWindowViewModel) 虽然我会指出,但我不确定我是否正确处理了这个问题 我的简单设置是,我有一个视图(UserControl),它是空的,而不是一个控件(它只是为了视觉效果而放置的) 我的主窗口.xaml <Window x:Class="DelegateGoodExample.MainWindow" xmlns="http://schem
<Window x:Class="DelegateGoodExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModel="clr-namespace:DelegateGoodExample.ViewModel"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<viewModel:MainWindowViewModel x:Key="Vm" />
</Window.Resources>
<Grid>
<ContentControl Height="147" Margin="53,132,60,0"
VerticalAlignment="Top"
Content="{StaticResource Vm}" />
</Grid>
</Window>
所以我的问题是,
内容控件
中,而不是视图中。由于viewmodel类不是一个类,并且没有DataTemplate
来确定它应该如何呈现,因此显示的只是它的.ToString()
表示形式
立即的解决办法是:
<ContentControl Height="147" Margin="53,132,60,0"
VerticalAlignment="Top"
Content="{Binding Source={StaticResource Vm}, Path=View}" />
但是,您不应该这样做,而应该直接将视图放在
网格中,并且viewmodel不应该知道该视图。对不起,我迷路了,您建议我像这样放入一个网格,但请给出一个contentControl的示例:)我应该将其放入网格吗?@DaveRook:您可以绑定到VM的视图属性(我添加了一个示例)。但通常情况是相反的:视图被直接添加到逻辑树中——更不用说通常ViewModel
不应该知道绑定到它的视图的数量和内容,如果一开始就有view
属性,这显然是不可能的,这意味着我需要更新我的方法,因为我在向后做。再次感谢你,乔恩,你说它不应该知道的看法。请参阅本教程。。。你会说这是错误的方法,因为它是对的还是错的?@DaveRook:请说得更具体一些。
<ContentControl Height="147" Margin="53,132,60,0"
VerticalAlignment="Top"
Content="{Binding Source={StaticResource Vm}, Path=View}" />