为什么CommandParameter始终为null
本文关键字:null CommandParameter 为什么 | 更新日期: 2023-09-27 18:29:56
有人知道为什么CommandParameter总是null吗?
类TransactionViewModel具有要在ItemsControl中显示的TransactionCommands的集合属性。这些项的类型为CommandViewModel。
TransactionBrowserViewModel具有命令AddJobForSelectedTransactionCommand。要作为参数传递的命令CommandViewModel。
查看代码段:
<ItemsControl Grid.Row="4"
ItemsSource="{Binding TransactionCommands}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<telerik:RadButton Content="{Binding DisplayName}"
CommandParameter="{Binding DataContext, RelativeSource={RelativeSource Self}}"
Command="{Binding ViewModel.AddJobForSelectedTransactionCommand, ElementName=userControl}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
UserControl的代码隐藏:
[Export]
public partial class TransactionBrowserView : UserControl, IView<TransactionBrowserViewModel>
{
[ImportingConstructor]
public TransactionBrowserView()
{
InitializeComponent();
}
[Import]
public TransactionBrowserViewModel ViewModel
{
get { return (TransactionBrowserViewModel)this.DataContext; }
set { this.DataContext = value; }
}
}
好的,很抱歉我发现了错误。它位于Telerik的RadButton上。我已经用一个默认按钮测试了这个场景。在这里它工作没有任何问题。
您已经将ComandParameter
设置为RadButton
的DataContext
的路径,但我看不出您在任何地方都对DataContext
设置了任何内容。
查看"输出"窗口以获取有关绑定错误的信息。。。它应该说类似于"在对象XXX上没有DataContext
属性"的内容。
您试图绑定到CommandParameter
属性的是什么?
尝试此绑定
<ItemsControl x:Name="transactionList" Grid.Row="4" ItemsSource="{Binding TransactionCommands}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<telerik:RadButton Content="{Binding DisplayName}"
CommandParameter="{Binding SelectedItem, ElementName=transactionList}"
Command="{Binding ViewModel.AddJobForSelectedTransactionCommand, ElementName=userControl}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
赋予ItemsControl(如transactionList
),并设置CommandParameter
与transactionList的SelectedItem
的绑定。
或者这不是你想要的。
<telerik:RadButton Content="{Binding DisplayName}"
CommandParameter="{Binding}"
Command="{Binding ViewModel.AddJobForSelectedTransactionCommand, ElementName=userControl}"/>