【问题标题】:Command & command parameter Tree in XamlXaml 中的命令和命令参数树
【发布时间】:2015-10-10 18:31:29
【问题描述】:

尝试将一个按钮更改为另一个,我遇到了命令处理问题。很难描述它的来源,因为几乎所有的都是一样的,但是当我通过 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>

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

在这里找到了解决方案: How do you bind a command to a MenuItem (WPF)?

【问题讨论】:

标签: c# wpf xaml


【解决方案1】:

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

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

不要忘记将占位符替换为有效值,即使用与适当的 CLR 命名空间和声明 Instance 属性的类型相对应的 xml 命名空间前缀。

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

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 2011-12-30
    • 2016-03-25
    • 2018-01-25
    • 2012-10-04
    • 2023-04-09
    • 2012-09-11
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多