wpf 实现自定义控件 按钮带参数命令
时间: 2023-10-09 15:10:18 浏览: 340
可以通过继承 WPF 中的 Button 类并实现 ICommandSource 接口来创建一个自定义控件,该控件可以带有参数命令。首先,创建一个类,继承 Button 类并实现 ICommandSource 接口,如下所示:
```csharp
public class CommandButton : Button, ICommandSource
{
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
"CommandParameter", typeof(object), typeof(CommandButton), new PropertyMetadata(default(object)));
public object CommandParameter
{
get { return GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
public ICommand Command
{
get { return (ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
"Command", typeof(ICommand), typeof(CommandButton), new PropertyMetadata(default(ICommand)));
protected override void OnClick()
{
if (Command != null)
{
Command.Execute(CommandParameter);
}
base.OnClick();
}
}
```
在这个自定义控件中,我们定义了一个名为 CommandButton 的类,其中包含一个名为 CommandParameter 的依赖属性和一个名为 Command 的依赖属性。我们还重写了 OnClick 方法,在单击按钮时执行与命令相关的操作。
现在,您可以在 XAML 中使用这个自定义控件,并为 Command 和 CommandParameter 属性设置值,如下所示:
```xml
<local:CommandButton Content="Click Me!" Command="{Binding MyCommand}" CommandParameter="parameter" />
```
其中,local 是指您的自定义控件所在的命名空间。MyCommand 是您的 ViewModel 中实现的命令,parameter 是该命令的参数。当用户单击按钮时,命令将被执行,并且参数将被传递给命令的 Execute 方法。
阅读全文