繁体   English   中英

Xaml中的命令和命令参数树

[英]Command & command parameter Tree in Xaml

在尝试将一个按钮更改为另一个按钮时,我陷入了命令处理问题。 由于几乎所有内容都是相同的,因此很难描述其来源,但是当我通过setter传递命令时,它就无法工作。

我之前的代码(它的工作原理就像一个咒语):它只是一个拆分按钮,它将其菜单项标题作为参数传递给执行命令。

<xctk:SplitButton.DropDownContent>
    <ItemsControl ItemsSource="{Binding Instance.InstanceVM.Names}" x:Name="NamesCtr">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <MenuItem Header="{Binding}" Command="{Binding ElementName=NamesCtr, Path=DataContext.Instance.InstanceVM.Load}" CommandParameter="{Binding}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</xctk:SplitButton.DropDownContent> 

这是我的下拉按钮:

<controls:DropDownButton.DropDownContextMenu>
    <ContextMenu x:Name="NamesCtr" ItemsSource="{Binding Instance.InstanceVM.Names}">
        <ContextMenu.ItemContainerStyle>
            <Style TargetType="MenuItem">
                <Setter Property="Template" Value="{StaticResource DropDownMenuItemTemplate}"/>
                <Setter Property="Header" Value="{Binding}"/>
                <Setter Property="Command" Value="{Binding ElementName=Namestr, Path=DataContext.Instance.InstanceVM.Load}"/>
                <Setter Property="CommandParameter" Value="{Binding}"/>
            </Style>
        </ContextMenu.ItemContainerStyle>
    </ContextMenu>
</controls:DropDownButton.DropDownContextMenu>

这将显示一个按钮,以及带有正确菜单项的下拉菜单(因此源,模板和标题均已正确绑定,但该命令未达到其功能)

在这里找到解决方案: 如何将命令绑定到MenuItem(WPF)?

通过静态单例进行绑定时,可以像下面这样修改Binding:

<Setter Property="Command" Value="{Binding Source={x:Static <xmlnamespace>:<yourType>.Instance}, Path=InstanceVM.Load}"/

不要忘了用有效值替换占位符,即用对应于适当的CLR名称空间和声明Instance属性的类型的xml名称空间前缀替换。

请注意,如果将ElementName绑定和RelativeSource绑定放置在DataTemplates / Styles中,以及在可视化树中使用Popups的情况下,它们的信任度也较低。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM