Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将CallMethodAction中的TargetObject设置为XAML中父DataContext中的ViewModel_C#_Wpf_Xaml_Mvvm_Uwp - Fatal编程技术网

C# 将CallMethodAction中的TargetObject设置为XAML中父DataContext中的ViewModel

C# 将CallMethodAction中的TargetObject设置为XAML中父DataContext中的ViewModel,c#,wpf,xaml,mvvm,uwp,C#,Wpf,Xaml,Mvvm,Uwp,我正在创建一个UWP应用程序,到目前为止,我一直在使用CallMethodAction从ViewModel调用方法,效果很好 但是现在,我尝试对列表视图中的一些按钮使用相同的方法,当我单击按钮时,什么也没有发生。XAML代码是: <Page.DataContext> <vm:RoomPageViewModel x:Name="ViewModel" /> </Page.DataContext> <ListView x:Name="Actuator

我正在创建一个UWP应用程序,到目前为止,我一直在使用
CallMethodAction
从ViewModel调用方法,效果很好

但是现在,我尝试对
列表视图中的一些按钮使用相同的方法,当我单击按钮时,什么也没有发生。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
,但我发现没有任何方法有效。

因为您的视图模型实际上不是元素,所以不能将其与
ElementName
一起用于绑定

在您的情况下,正确的解决方案是为页面命名(
x:name=“page”
),并绑定到其
DataContext

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

你是xaml的神。我真的很难尝试(除其他外)相对资源和AncestorType。如果你能给我指给你这种理解的任何资源,我将不胜感激。