gpt4 book ai didi

c# - 按钮命令绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-11-30 20:57:57 24 4
gpt4 key购买 nike

我创建了一个新的 UserContol,里面有一个按钮。我想像这样将按钮命令绑定(bind)到新用户控件的依赖属性。

<Grid>
<Button Name="Button1" Command="{Binding Button1Command}" />
</Grid>

这是包含 UserControl 的 DP:

public ICommand Button1Command
{
get { return (ICommand)GetValue(Button1CommandProperty); }
set { SetValue(Button1CommandProperty, value); }
}

public static readonly DependencyProperty Button1CommandProperty =
DependencyProperty.Register("Button1Command", typeof(ICommand), typeof(BptCellTemplate), new FrameworkPropertyMetadata(null));

当我尝试使用它时,按下按钮时没有任何反应。它不识别命令。如果我添加一个事件,它就会起作用。像这样:

 public static readonly DependencyProperty Button1CommandProperty =
DependencyProperty.Register("Button1Command", typeof(ICommand), typeof(BptCellTemplate), new FrameworkPropertyMetadata(null, OnButton1CommandChanged));

private static void OnButton1CommandChanged(DependencyObject dependencyObject,
DependencyPropertyChangedEventArgs args)
{
var bptCellTemplate = dependencyObject as BptCellTemplate;
if (bptCellTemplate == null || !(args.NewValue is ICommand))
{
return;
}
(bptCellTemplate.DataContext as BptCellTemplateViewModel).Button1Command = (ICommand)args.NewValue;

}

有没有办法在没有事件的情况下绑定(bind)它?因为它与我以相同方式执行的其他按钮属性一起使用(例如 Visibility)

最佳答案

您的绑定(bind)可能无法正常工作,因为没有任何内容表明 Button1Command 属性是您的 UserControl 的成员。

在 Visual Studio 中调试程序时,您可以通过查看“输出”窗口来确认这是问题所在。您可能会看到未找到成员 Button1Command 的绑定(bind)错误。

典型的修复方法是在 UserControl 的根元素中添加一个名称属性,例如 x:Name="root"(您可以选择您的自己的名字或使用现有的名字)。然后,更改对命令的绑定(bind)以引用新名称:

<Button Name="Button1" Command="{Binding Button1Command, ElementName=root}" />

关于c# - 按钮命令绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16413899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com