kor*_*or_ 47 c# wpf command mvvm viewmodel
我有一个AttributeView
包含各种属性的视图.还有一个按钮,按下时,它应该为属性设置默认值.我还有一个ViewModelBase
类,它是我所有ViewModel的基类.问题是我似乎无法使用WPF将命令绑定到命令.
我试过这个,但它没有做任何事情:
<Button Command="{Binding DataInitialization}" Content="{x:Static localProperties:Resources.BtnReinitializeData}"></Button>
Run Code Online (Sandbox Code Playgroud)
该命令是在(如下ViewModelBase
)中定义的:
public CommandBase DataInitialization { get; protected set; }
Run Code Online (Sandbox Code Playgroud)
在应用程序启动时,为该命令创建一个新实例:
DataInitialization = new DataInitializationCommand()
Run Code Online (Sandbox Code Playgroud)
但是,WPF绑定似乎没有"找到"命令(按下按钮什么都不做).当前视图中使用的ViewModel派生自ViewModelBase
.我还能尝试什么(我对WPF很新,所以这可能是一个非常简单的问题)?
yo *_*han 114
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Command="{Binding ClickCommand}" Width="100" Height="100" Content="wefwfwef"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
窗口背后的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModelBase();
}
}
Run Code Online (Sandbox Code Playgroud)
而ViewModel:
public class ViewModelBase
{
private ICommand _clickCommand;
public ICommand ClickCommand
{
get
{
return _clickCommand ?? (_clickCommand = new CommandHandler(() => MyAction(), ()=> CanExecute));
}
}
public bool CanExecute
{
get
{
// check if executing is allowed, i.e., validate, check if a process is running, etc.
return true/false;
}
}
public void MyAction()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这会给你这个想法.