gpt4 book ai didi

c# - 在 XAML 中将 CallMethodAction 中的 TargetObject 设置为父 DataContext 中的 ViewModel

转载 作者:行者123 更新时间:2023-12-01 22:24:02 24 4
gpt4 key购买 nike

我正在创建一个 UWP 应用,到目前为止,我一直在使用 CallMethodAction 从 ViewModel 调用方法,并且运行良好。

但是现在,我尝试对 ListView 内的某些按钮使用相同的方法,但当我单击该按钮时没有任何反应。 XAML代码是:

<Page.DataContext>
<vm:RoomPageViewModel x:Name="ViewModel" />
</Page.DataContext>

<ListView x:Name="ActuatorListView"
ItemsSource="{x:Bind ViewModel.Room.Actuators}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Actuator">
<Button x:Name="OnButton" Content="On">
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior
EventName="Click"
SourceObject="{Binding ElementName=OnButton}">
<Core:CallMethodAction
MethodName="OnButton_Click"
TargetObject="{Binding ElementName=ViewModel, Mode=OneWay}" />
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</Button>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

我尝试了多种方法来访问父 DataContext,但发现没有任何效果。

最佳答案

由于您的 View 模型实际上不是元素,因此您不能将其与ElementName 一起使用进行绑定(bind)。

根据您的情况,正确的解决方案是为您的页面指定一个名称 (x:Name="Page") 并绑定(bind)到其 DataContext:

<Core:CallMethodAction 
MethodName="OnButton_Click"
TargetObject="{Binding Path=DataContext, ElementName=Page, Mode=OneWay}" />

关于c# - 在 XAML 中将 CallMethodAction 中的 TargetObject 设置为父 DataContext 中的 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708995/

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