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)
...
再次感谢.
因为您在控件的ItemTemplate中DataContext
,所绑定的不是您的ViewModel.Binding {Binding MyCommand, OneWay}
试图MyCommand
从集合BlaBla中找到对象的属性.这是命令模式的一个限制,因为DataTemplates内部的DataContext通常不是您的ViewModel.
真的没有好办法.您可以将命令包含在BlaBla集合中的对象中.您也可以使用自己的触发器来搜索VisualTree中的ViewModel,然后通过反射而不是实际绑定来检索命令.
归档时间: |
|
查看次数: |
2174 次 |
最近记录: |