Я новичок в WPF и пытаюсь изучить известный паттерн MVVM. У меня возникает небольшая проблема (я уверен), когда я пытаюсь привязать простую команду к какой-либо модели ViewModel
это простой UserControl, который я создал:
<UserControl x:Class="MVVM_UsingUserControl_Sample.View.MyUserControl"
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 DataContext="MyUserControlViewModel" Orientation="Vertical" >
<Button Margin="0,100,0,0" Height="50" Width="50" Content="PressMe" Command="{Binding Path=MyCommand}"/>
</StackPanel>
</UserControl>
и это ViewModel пользовательского управления
class MyUserControlViewModel : ViewModelBase
{
CommandBase m_MyCommand = null;
public MyUserControlViewModel()
{
}
public ICommand MyCommand
{
get
{
if (m_MyCommand == null)
{
m_MyCommand = new CommandBase(new Action<object>(DoSomething),
new Predicate<object>(CanDoSomething));
}
return m_MyCommand;
}
}
public void DoSomething(object i_Params)
{
MessageBox.Show("Inside MyUserControl DoSomething");
}
public bool CanDoSomething(object i_Params)
{
return true;
}
}
это главное окно xaml (без кода)
Теперь проблема в том, что мое главное окно содержит userControl как есть (внутри панели стека) и ничего больше.Я ожидаю, что команда «MyCommad» будет вызываться, когда я нажимаю кнопку «MyButton», но это не так.
У кого-нибудь есть идеи, почему ???Большое спасибо.