gpt4 book ai didi

wpf - 无法将命令传递/绑定(bind)到 WPF 用户控件

转载 作者:行者123 更新时间:2023-12-04 13:43:06 24 4
gpt4 key购买 nike

我正在尝试将命令传递给 WPF 用户控件中的元素。

<UserControl x:Class="MyApp.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- shortened -->
<Button Command="{Binding Command}">
<Button.Content>
<!-- shortened -->
</Button.Content>
</Button>
</UserControl>
public partial class MyControl : UserControl
{
public static readonly DependencyProperty CommandProperty
= DependencyProperty.Register("Command",
typeof(ICommand), typeof(MyControl));
//shortened
public ICommand Command
{
get { return (ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
//shortened
}
<uc:MyControl Command="{Binding DoStuffCommand}" />  <!-- shortened -->

单击用户控件中的按钮时,没有任何 react 。当我调试时, Command属性为空。将命令绑定(bind)到用户控件之外的按钮确实有效。这里出了什么问题?

最佳答案

默认 DataContext为您的Button是您的 UserControl 的 DataContext ,而不是您的 UserControl,因此您尝试绑定(bind)到 DataContext.Command而不是 UserControl.Command
绑定(bind)到 UserControl.Command , 使用 RelativeSource捆绑

<Button Command="{Binding Command, RelativeSource={
RelativeSource AncestorType={x:Type local:MyControl}}}">

编辑 刚注意到 HB's answer ,这也可以。通常我更喜欢 RelativeSource绑定(bind)到 ElementName因为有时我重命名项目并且习惯于忘记其他控件按名称引用该项目

关于wpf - 无法将命令传递/绑定(bind)到 WPF 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957123/

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