如何在其他用户控件中按名称查找元素?

How to find an element by name in other user control?

我有一个用户控件 (MainView) 和另一个用户控件 (GridView):

<local:MyGridView x:Name="GridView"/>

在我的 MainView 中,我有一个按钮:

<Button Command="{Binding TestCommand}"  
        CommandParameter="{Binding ElementName=DataGrid}" 
        Content="Test"/>

在我的 GridView 中,我有一个要作为 CommanParameter 发送的数据网格。 如果 GridView 代码在 MainView 代码中,则此语法有效。我应该改变什么?

我尝试了 {Binding ElementName=GridView.DataGrid} - 没有成功。

很简单。

<local:MyGridView x:Name="**GridView**"/>

<Button Command="{Binding TestCommand}"  
        CommandParameter="{Binding ElementName=**GridView**}" 
        Content="Test"/>

您应该将 ElementName 从 DataGrid 更改为 GridView。

您不能使用 ElementName 直接引用在另一个控件或名称范围中定义的元素。

您可以将 属性 添加到 MyGridView.xaml.cs 以公开 DataGrid 控件:

public DataGrid DataGrid => dataGrid1;

然后您可以绑定到此 属性 元素:

<Button Command="{Binding TestCommand}"  
        CommandParameter="{Binding Path=DataGrid, ElementName=GridView}" 
        Content="Test"/>

更好的方法是使用共享 DataContext(视图模型)并将两个控件绑定到这个控件的属性。