Wpf 通过关联菜单将参数传递给DevExpress树列表控件
我有一个TreeListControl,我希望将所选行作为关联菜单上的参数传递。所以我的控件看起来像: 查看: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
<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>