0

我正在尝试将视图绑定到我的 ContentControl。目前,它只显示类型(例如 NameSpace.ViewModel.MainWindowViewModel)

尽管我会指出,但我不确定我是否正确地处理了这个问题。

我的简单设置是我有一个视图 (UserControl),它是空的,而不是单个控件(仅用于视觉效果)。

我的 MainWindow.xaml

<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>

(后面的代码中没有任何内容)。

我的 MainWindowViewModel.cs

namespace DelegateGoodExample.ViewModel
{
    public class MainWindowViewModel
    {
        private object _currentView;
        public object CurrentView 
        { 
            get { return new View.QuickView(); } 
            set { _currentView = value; } 
        }
    }
}

所以,我的问题是,

  1. 我是否必须在这种情况下设置数据上下文(即使我添加它,结果仍然存在)?
  2. 我做错了什么?
4

1 回答 1

0

您将视图模型放在 中ContentControl,而不是视图中。由于您的 viewmodel 类不是 aUIElement并且无法DataTemplate确定它应该如何呈现,所以显示的只是它的.ToString()表示。

立即修复将是:

<ContentControl Height="147" Margin="53,132,60,0" 
                VerticalAlignment="Top" 
                Content="{Binding Source={StaticResource Vm}, Path=View}" />

但是,不要以这种方式做事,您应该将视图Grid直接放在内部,并且视图模型不应该对视图有任何了解。

于 2013-02-22T13:48:01.470 回答