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います。ビューモデル クラスは ではなく、レンダリング方法を決定する必要がUIElementないため、表示されるのは単にその表現です。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 に答える