2012-02-29 3 views
2

Я пытаюсь сделать простейшую вещь: привяжите View к ViewModel, но по какой-то причине он не работает.Невозможно связать View to ViewModel

У меня есть MainWindow:

<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 установить MainWindow контекст:

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 как содержание контроля, и он будет использовать DataTemplate у определенного ранее.

Смежные вопросы