任何人都知道为什么CommandParameter总是为空?
TransactionViewModel类具有要在ItemsControl中显示的TransactionCommands的collection属性。这些项的类型为CommandViewModel。
TransactionBrowserViewModel具有AddJobForSelectedTransactionCommand命令。要作为CommandViewModel参数传递的命令。
查看Snipp:
<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; }
}
}
答案 0 :(得分:0)
您已将ComandParameter
设置为DataContext
RadButton
的路径,但我发现您没有为DataContext
设置任何内容任何地方。
查看“输出”窗口,了解有关绑定错误的信息......它应该说“对象XXX&#39;上没有DataContext
属性”。
你尝试绑定到CommandParameter
属性是什么?
答案 1 :(得分:0)
尝试此绑定
<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}"/>
答案 2 :(得分:0)
好的,对不起,我发现了错误。 它位于Telerik的RadButton上。我用默认按钮测试了场景。这里没有任何问题。