2012-02-29 27 views
2

最も単純なことをしようとしています.ViewをViewModelにバインドしますが、何らかの理由でそれが動作しません。ViewをViewModelにバインドできません

私はメインウィンドウを持っている:

<Window x:Class="ImagesToAmazon.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" 
    xmlns:v="clr-namespace:ImagesToAmazon.View" 
    xmlns:vm="clr-namespace:ImagesToAmazon.ViewModel" > 

<Window.Resources> 
    <DataTemplate DataType="{x:Type vm:MainViewModel}"> 
     <v:MainControl /> 
    </DataTemplate> 
</Window.Resources> 

<Grid> 

</Grid> 

MainViewModel:

namespace ImagesToAmazon.ViewModel{ 
public class MainViewModel { 
}} 

MainControl:

<UserControl x:Class="ImagesToAmazon.View.MainControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<StackPanel> 
    <Button Content="Button" Height="23" Name="button1" Width="75" /> 
</StackPanel> 

また、私は、コンテキストメインウィンドウに設定するApp.OnStartupをオーバーライドします。

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     var window = new MainWindow(); 
     var viewModel = new ViewModel.MainViewModel(); 
     window.DataContext = viewModel; 

     window.Show(); 
    } 
} 

すべてのコンパイルが、私はMainControlから私のボタンが表示されません。 手がかりはありますか?メインウィンドウで

+0

ここでMVVMについて詳しく調べてみてください: http://galasoft.ch/mvvm/ – shmoltz

+0

バインディングはどこにありますか? – chopikadze

+0

実際、これは通常、MVVM世界の開始点です:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx。しかし、まずはWPFについて慎重に読んで、簡単にMVVMを深く理解できるように見えます。 – chopikadze

答えて

1

<ContentControl Content="{Binding }" /> 

でグリッドを置き換える。これは、コントロールの内容として、現在のDataContextを使用しようとします、そしてそれはuが前に定義したDataTemplateを使用します。

関連する問題