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

标签 silverlight windows-phone-7 command pivot mvvm-light

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

附注我的代码非常标准,但以防万一,它是:

    <controls:Pivot Grid.Row="0"
        x:Name="PivotControl"
        Title="{Binding ApplicationTitle}"                         
        ItemsSource="{Binding BlaBla}">

        <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>
           ...

以及 ViewModel 代码:

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

...

再次感谢。

最佳答案

因为您位于控件的 ItemTemplate 内,所以您绑定(bind)到的 DataContext 不是您的 ViewModel。绑定(bind) {Binding MyCommand, OneWay} 正在尝试从集合 BlaBla 中的对象上查找属性 MyCommand。这是命令模式的限制之一,因为在 DataTemplates 中,您的 DataContext 通常不是您的 ViewModel。

确实没有什么好的办法。您可以将命令包含在 BlaBla 集合的对象中。您还可以调整自己的触发器,在 VisualTree 中搜索 ViewModel,然后通过反射而不是实际绑定(bind)检索命令。

关于silverlight - MVVM Light EventToCommand 在 WP7 Pivot DataTemplate 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051634/

相关文章:

wcf - WP7 : Unable to catch FaultException in asynchronous calls to WCF service

performance - Windows Phone 8 应用程序分析中的纹理内存占主导地位是什么意思?

hadoop - hadoop jar 和 yarn -jar 的区别

visual-studio-2012 - VS2012 : where is custom toolbar command SyncWithActiveDocument?

symfony - 测试类未指定或无效

c# - 如何将 Silverlight 应用程序放入 ASP MVC View 页面?

silverlight - 在 Silverlight 3 中使用网格作为 ItemsControl 的 ItemsPanel

silverlight - 如何使Silverlight ScrollViewer滚动以显示具有焦点的子控件?

.net - 为什么不能绑定(bind)到 Silverlight 中的 TextDecoration?

c# - 使用 Windows Phone 在运行时加载 xaml viewmodel