1

有人知道为什么 CommandParameter 总是为空吗?

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; }
    }
}
4

3 回答 3

1

好的,对不起,我发现了错误。它位于 Telerik 的 RadButton 上。我已经使用默认按钮测试了该场景。在这里它没有任何问题。

于 2013-09-02T09:16:33.817 回答
0

您已将 设置为的ComandParameter路径,但我没有看到您在任何地方都设置了任何内容。DataContextRadButtonDataContext

查看“输出”窗口以获取有关您的绑定错误的信息......它应该显示类似“DataContext对象 XXX 没有属性”之类的内容。

绑定什么CommandParameter属性?

于 2013-09-02T08:39:31.333 回答
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)并将 的绑定设置CommandParameterSelectedItem您的 transactionList。

或者这不是你想要的。

<telerik:RadButton Content="{Binding DisplayName}"
                   CommandParameter="{Binding}"
                   Command="{Binding ViewModel.AddJobForSelectedTransactionCommand, ElementName=userControl}"/>
于 2013-09-02T08:51:35.843 回答