用户控件视图代码:
<TextBox Name="TextB" Width="364" Height="38" FontSize="24" Background="Transparent" BorderThickness="0" VerticalContentAlignment="Center" Foreground="#6076AD" HorizontalAlignment="Left" Text="请输入设备编号"/>
用户控件后台代码:
private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var MyVM = DataContext as MainViewModel; string Name = this.TextB.Text.ToString();
if (MyVM != null && MyVM.ClickCC.CanExecute(null))
MyVM.ClickCC.Execute(Name);
}
MainViewModel 代码
public RelayCommand ClickCC
{
get
{
return new RelayCommand((arg) =>
{
MessageBox.Show(arg.ToString());
});
}
}
RelayCommand命令类
public class RelayCommand : ICommand
{
private readonly Action<object> m_execute;
private readonly Predicate<object> m_canExecute;
public RelayCommand(Action<object> execute)
{
this.m_execute = execute;
}
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
this.m_execute = execute;
this.m_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
if (m_canExecute == null)
return true;
return m_canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
this.m_execute(parameter);
}
}