C# 装订不';无法处理在XAML中创建的DependencyObject
我试图使用自定义类在XAML中传递多个CommandParameters 我创建了一个名为ValueCommandArgs的类,该类继承自DependencyObject,并具有两个DependencyProperty(在本例中,我们将它们称为Value1和Value2) 用于调用命令并传递此对象的按钮如下所示:C# 装订不';无法处理在XAML中创建的DependencyObject,c#,wpf,xaml,binding,C#,Wpf,Xaml,Binding,我试图使用自定义类在XAML中传递多个CommandParameters 我创建了一个名为ValueCommandArgs的类,该类继承自DependencyObject,并具有两个DependencyProperty(在本例中,我们将它们称为Value1和Value2) 用于调用命令并传递此对象的按钮如下所示: <Button Command="{Binding ChangeValueCommand}" Content="Execute Command"> <Butt
<Button Command="{Binding ChangeValueCommand}" Content="Execute Command">
<Button.CommandParameter>
<args:ValueCommandArgs Value1="{Binding TestValue1}" Value2="{Binding TestValue2}" />
</Button.CommandParameter>
</Button>
我确实在命令中获得了ValueCommandArgs对象作为参数,但是属性Value1和Value2始终为null/empty
我知道这可以通过多重绑定和转换器来解决,但我认为我尝试的方法是更干净的方法
为什么这不起作用?绑定需要源对象才能提供值。未指定绑定源时(使用
source
或ElementName
等),例如:Value1=“{Binding TestValue1}”
使用元素的DataContext
args:ValueCommandArgs
对象不会从按钮
元素继承DataContext
,因为属性值继承特别是关于属性值如何基于元素树中的父子关系从一个元素继承到另一个元素
button对象在其逻辑树或可视树中不包含CommandParameter
属性的值
在许多情况下,通过将值直接绑定到ViewModel,可以避免使用具有多个绑定值的CommandParameter
当无法避免时,您可以使用不同类型的绑定标记扩展,如:将根FrameworkElement
用作绑定源
另一种方法是绑定代理技术,如本文所示:输出窗口中是否出现绑定错误?我认为绑定失败。您希望
DataContext
被传递给ValueCommandArgs
,但我认为不可能。我也不知道如何实现一些可以接收传递给它的DataContext的类型。在这种情况下,您应该为绑定显式设置源代码。(请注意,ElementName
和RelativeSource
仅当您的ValueCommandArgs
继承自FrameworkElement或FrameworkContentElement时才可用)。您将需要一个绑定代理签出此-@NovitchiS解决了此问题;也许考虑把它写出来作为答案。当然,我会写一个答案,为什么绑定不起作用,代理如何解决这个问题,只要我几分钟。