MVVM Light EventToCommand在WP7 Pivot DataTemplate中不起作用

Tec*_*ch0 2 silverlight command pivot windows-phone-7 mvvm-light

我有一个非常奇怪的问题.在我的WP7应用程序中,我有一个数据透视控件和一个在其中定义的项目模板(或者在资源中,我尝试了两种方式,但仍然是同样的问题).在模板中,我有一个定义了EventToCommand的常规按钮(EventName ="Click").我在Pivot外面也有相同的复制粘贴按钮.问题是枢轴外的按钮工作正常,但内部的按钮不起作用.实际上我已经注意到,我的枢轴内的任何命令都不起作用.我在ViewModel中正确处理了Command,因为相同的按钮,但在pivot之外工作得很好.任何想法可能是什么问题?请帮忙.提前致谢.干杯.

PS我的代码非常标准,但以下是以下情况:

    <controls:Pivot Grid.Row="0"
        x:Name="PivotControl"
        Title="{Binding ApplicationTitle}"                         
        ItemsSource="{Binding BlaBla}">
Run Code Online (Sandbox Code Playgroud)

        <controls:Pivot.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                   <Button Content="Click Me">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <cmd:EventToCommand Command="{Binding MyCommand, Mode=OneWay}" CommandParameterValue="Test"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </Button>
           ...
Run Code Online (Sandbox Code Playgroud)

和ViewModel代码:

public RelayCommand<string> MyCommand
    {
        get;
        private set;
    }
//And in the constructor ...
MyCommand= new RelayCommand<string>((param) => HandleTheCommand(param));
Run Code Online (Sandbox Code Playgroud)

...

再次感谢.

Ste*_*han 5

因为您在控件的ItemTemplate中DataContext,所绑定的不是您的ViewModel.Binding {Binding MyCommand, OneWay}试图MyCommand从集合BlaBla中找到对象的属性.这是命令模式的一个限制,因为DataTemplates内部的DataContext通常不是您的ViewModel.

真的没有好办法.您可以将命令包含在BlaBla集合中的对象中.您也可以使用自己的触发器来搜索VisualTree中的ViewModel,然后通过反射而不是实际绑定来检索命令.