gpt4 book ai didi

windows-phone-7 - 绑定(bind)到 Windows Phone 7 项目数据模板内的 MVVM Light 中继命令

转载 作者:行者123 更新时间:2023-12-04 07:07:02 27 4
gpt4 key购买 nike

我正在尝试使用 MVVM Light 命令将按钮绑定(bind)到 viewmodel 命令,并且由于某种原因,该命令似乎没有被调用。通常我使用命令没有任何问题,但这似乎忽略了绑定(bind)。

这是我的代码:

<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button>
<Interactivity:Interaction.Triggers>
<Interactivity:EventTrigger EventName="Click">
<Command:EventToCommand
Command="{Binding MyButtonClickAction}" />
</Interactivity:EventTrigger>
</Interactivity:Interaction.Triggers>
</Button>

<StackPanel>
<TextBlock Text="{Binding MyProperty}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding MyOtherProperty}" />
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>

此数据模板位于我的应用程序启动后创建的列表中,我想知道这是否是问题所在。我的理论是创建了 View 模型并且构造函数尝试使用中继命令设置绑定(bind),但是由于列表还没有任何项目,因此绑定(bind)以某种方式失败。

MyProperty 和 MyOtherProperty 的绑定(bind)工作正常。

关于如何让这个工作的任何建议?

最佳答案

问题是在 DataTemplate 中,DataContext 是项目本身,而不是您的 ViewModel。所以当你说 {Binding MyButtonActionClick} ,绑定(bind)正在寻找一个名为 MyButtonActionClick 的命令在项目上,我猜这只是一个简单的对象,并没有自己的命令属性。

有几种方法可以解决这个问题。由于您已经在使用 MMVM Light,最好的方法可能是将您的集合定义为 List<FooViewModel>而不是 List<Foo>并将您的项目包装在他们自己的 ViewModel 类中。然后你可以添加一个MyButtonActionClick该 ViewModel 的命令和对父 ViewModel 的回调。

否则,更改您的命令绑定(bind),使其查看 ItemsControl 本身的 DataContext。看看this question (当然还有公认的答案)关于如何做到这一点的一些想法。

关于windows-phone-7 - 绑定(bind)到 Windows Phone 7 项目数据模板内的 MVVM Light 中继命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com