Wpf 通过关联菜单将参数传递给DevExpress树列表控件

Wpf 通过关联菜单将参数传递给DevExpress树列表控件,wpf,devexpress,contextmenu,commandparameter,Wpf,Devexpress,Contextmenu,Commandparameter,我有一个TreeListControl,我希望将所选行作为关联菜单上的参数传递。所以我的控件看起来像: 查看: <Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" T

我有一个TreeListControl,我希望将所选行作为关联菜单上的参数传递。所以我的控件看起来像:

查看:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" 
        xmlns:dxt="http://schemas.devexpress.com/winfx/2008/xaml/grid" >

    <dxt:TreeListControl Name="treeList" ItemsSource="{Binding MyCollection}">

        <!-- Context menu I AM HAVING TROUBLE HERE PASSING A PARAMETER TO THE COMMAND -->
        <dxt:TreeListControl.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Mount"
                    Command="{Binding MyCustomCommand}"   
                    CommandParameter="{Binding SELECTED_JUST_CLICKED_ROW_OF_THIS_CONTROL}">
                    <MenuItem.Icon>
                        <Image Source="/Server;component/Images/SomeImage.png" Width="40"  />
                    </MenuItem.Icon>
                </MenuItem>
            </ContextMenu>
        </dxt:TreeListControl.ContextMenu>

        <!-- Columns of the control -->
        <dxt:TreeListControl.Columns>                     
            <dxt:TreeListColumn FieldName="Name" Header="Name"/>
            <dxt:TreeListColumn FieldName="Position" Header="Position"/> 
        </dxt:TreeListControl.Columns>
        <!-- View -->
        <dxt:TreeListControl.View>
            <dxt:TreeListView Name="treeListView1" AutoWidth="True"
                              KeyFieldName="ID" ParentFieldName="ParentID"/>
        </dxt:TreeListControl.View>
    </dxt:TreeListControl>

</Window>
它们都返回空值。。。我能通过的唯一参数是:

CommandParameter="Foo"

编辑 DevExpress回答了以下问题:


这将为您提供打开此上下文菜单的控件。我希望这将为您提供一个想法。



这将为您提供打开此上下文菜单的控件。我希望这将为您提供一个想法。

它不起作用的原因毫无意义。你的回答很有道理,但出于某种原因,我仍然得到空值:(.例如,如果是listView的ContextMenu,则答案有效,但DevExpress控件出于某种原因使其无法工作。该答案为空,因为ToolTip和ContextMenu等控件不是树的一部分,因此您无法像与其他控件一样直接绑定它们。这些控件确实具有名为PlacementTarget的属性,该属性提供打开它们的控件。可以在以下位置找到更好的答案:。我将您的答案标记为正确,因为它很有帮助并且有效!它不起作用的原因毫无意义。您的答案很有意义,但由于某些原因,我仍然为空:(.例如,如果是listView的ContextMenu,则答案有效,但DevExpress控件出于某种原因使其无法工作。该答案为空,因为ToolTip和ContextMenu等控件不是树的一部分,因此您无法像与其他控件一样直接绑定它们。这些控件确实具有名为PlacementTarget的属性,该属性提供打开它们的控件。可以在以下位置找到更好的答案:。我将您的答案标记为正确,因为它很有帮助,而且很有效!我看到一位devex成员为您发布了一个解决方案。在涉及到控件时,他们总是最适合询问的人:)是的,我刚刚做了一个编辑,显示了找到答案的链接。这比我想象的要复杂得多。@Ethicalogics发布了一个可行的解决方案,但要通过实际选定的行是很棘手的…我看到一个devex成员为您发布了一个解决方案。他们总是在涉及到他们的控件时最好询问的人:)是的,我刚刚编辑了一个链接,显示了在哪里可以找到答案。这比我想象的要复杂得多。@ethicalogics发布了一个可行的解决方案,但要通过实际选中的行是很棘手的。。。
CommandParameter="{Binding RowHandle.Value}"
CommandParameter="{Binding Data.Name}"
CommandParameter="{Binding Data}"
CommandParameter="{Binding ElementName=treeList, Path=Name}"
CommandParameter="Foo"
<ContextMenu Name="MyContextMenu" Tag="{Binding PlacementTarget,RelativeSource={RelativeSource Self}}">
            <MenuItem Header="Mount" Command="{Binding MyCustomCommand}" CommandParameter="{Binding Tag , ElementName= MyContextMenu}"/>
        </ContextMenu>