绑定命令不工作
问题描述:
我在usercontrol
一个SplitButton
,则usercontrol
的DataContext的是view
定义命令我希望splitbutton
结合。绑定命令不工作
正如我简短的XAML代码显示如下,第一绑定工作,但第二(在DropDownContent
button
)不与输出:
无法为参照结合找到源“的RelativeSource FindAncestor ,AncestorType ='System.Windows.Controls.UserControl ....
或(如果我顶替结合使用的ReleativeSource
ElementName
代替表达)
无法为参照 '的ElementName = UC' 结合找到源...
<UserControl x:Name="uc"
xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
>
<Grid>
<ItemsControl ItemsSource="{Binding ItemList, IsAsync=True}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<extToolkit:SplitButton Command="{Binding
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},
Path=DataContext.OpenCommand,
Mode=OneWay}"
CommandParameter="{Binding}"
Content="{Binding ID}">
<extToolkit:SplitButton.DropDownContent>
<Button Command="{Binding
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},
Path=DataContext.OpenCommand,
Mode=OneWay}"
CommandParameter="{Binding}"
Content="{Binding ID}"/>
</extToolkit:SplitButton.DropDownContent>
</extToolkit:SplitButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
答
最后,我发现了
的
DropDownContent
和不同的视觉树 它的内容比拥有SplitButton
的那个。这样绑定到 RelativeSource不能工作,它没有找到所需的相对源 ,因为它们在不同的视觉树中。
REF(虽然它是另一种控制,但我认为它们都是基于同样的事情)
所以,我有我的VM添加为项目对象的属性,并从那里结合虚拟机的命令。
答
我认为你应该参考你的命令Command="{x:Static someNamespace:SomeClass.OpenCommand}"
。