我的WPF表单正在使用多个用户控件。这些代表了独特的形式我需要提供导航类功能。
用户点击UserControl A上的EDIT按钮后,我想绑定UserControl B的DataContext并在主表单上打开此用户控件。
此主表单包含用户控件。我怎么能这样做?
这就是我的代码的样子
<Window>
<TabControl Background="Transparent">
<TabItem Header="View Registration" Background="Transparent">
<my:BulkPersonRegistration x:Name="BulkPersonRegistrationForm" />
</TabItem>
<TabItem Header="Add/Update Person" Background="Transparent">
<my:PersonManager x:Name="PersonManagerForm" />
</TabItem>
</TabControl>
</Window>
BulkPersonRegistration用户控件调用数据绑定函数以显示数据网格。绑定数据网格后,每行后都会出现编辑按钮。当用户单击编辑按钮时,我希望PersonManager表单被编辑行的对象绑定。 问题是,BulkPersonRegistration表单不知道PersonManagerForm。因此,我需要一种方法来找出BulkPersonRegistration的父表单,即所有者表单,然后找到Personmanager表单,最后设置它的数据上下文。我认为所有这些都需要在BulkRegistration表单上完成。我宁愿在Window而不是用户控制上这样做。
请建议。
答案 0 :(得分:0)
您可以沿着这些线创建布局......
<DockPanel>
<Button DockPanel.Dock="Top"
Content ="EDIT"
Height="30"
Width="150"
Click="ButtonBase_OnClick"
/>
<TextBlock DockPanel.Dock="Top" Name="Control1" DataContext="{Binding}" Background="Yellow"/>
<TextBlock DockPanel.Dock="Top" Name="Control2" Visibility="Collapsed" Background="Green"/>
<Rectangle DockPanel.Dock="Top"></Rectangle>
</DockPanel>
在点击处理程序中,您可以设置第二个控件的数据上下文...
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Control2.DataContext = Control1.DataContext;
Control2.Visibility = Visibility.Visible;
}
此代码段使第二个控件可见,并使第一个控件与第二个控件共享其数据上下文。您实际上可以将控件的数据上下文设置为任何内容,但此代码段假定它是相同的数据上下文。设置控件的可见性将使其“打开”。
答案 1 :(得分:0)
您好您只需使用 ElementName 绑定
即可实现此目的<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<local:UserControl1 x:Name="uc1"/>
<local:UserControl2 Grid.Row="1" DataContext="{Binding DataContext, ElementName=uc1}"/>
</Grid>
我希望这会有所帮助。