c# - 如何从用户控件窗口访问父窗口的控件

标签 c# wpf user-controls

我有一个名为 parent.xaml 的父控件。在那里,我放置了一些控件,如 Grid、Popup 等。

<ScrollViewer>
    <StackPanel HorizontalAlignment="Center">
        <TextBlock HorizontalAlignment="Center">POC For GOTO in WPF Grid</TextBlock>
        <TextBlock>-</TextBlock>
        <Button x:Name="btn1" Click="btn1_Click">Click To Use GOTO</Button>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="auto"></RowDefinition>
            </Grid.RowDefinitions>
            <DataGrid x:Name="grid" ItemsSource="{Binding _CommonClass}" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Time}" Header="Time" />
                    <DataGridTextColumn Binding="{Binding Path=ID}" Header="id" />
                    <DataGridTextColumn Binding="{Binding Path=Program}" Header="Program" />
                    <DataGridTextColumn Binding="{Binding Path=Duration}" Header="Duration" />
                    <DataGridTextColumn Binding="{Binding Path=Description}" Header="Description" />
                </DataGrid.Columns>
            </DataGrid>
        </Grid>

            <Popup Name="Popup1" Width="240" Height="auto" Placement="Center" PlacementRectangle="50,50,50,100">
                <Border BorderBrush="DarkCyan" BorderThickness="3">
                    <local:GoToUC x:Name="myUserControlInstance"/>
                </Border>
            </Popup>

    </StackPanel>
</ScrollViewer>

我有一个名为 child.xaml 的用户控件。

<StackPanel Background="AliceBlue" VerticalAlignment="Center" Height="200">
    <Grid Margin="20,20,20,20">
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
        </Grid.RowDefinitions>

        <TextBox x:Name="tb_time" Grid.ColumnSpan="2" Grid.Row="0"></TextBox>
        <TextBlock Grid.Column="0" Grid.Row="1">-</TextBlock>
        <Button x:Name="btn_goto" Grid.Column="0" Grid.Row="2" Click="btn_goto_Click" Width="90">GOTO</Button>
        <Button x:Name="btn_cancel" Grid.Column="1" Grid.Row="2" Click="btn_cancel_Click" Width="50">Close</Button>
    </Grid>
</StackPanel>

现在从 child.xaml 我需要对父窗口的控件执行一些操作。就像我想从子窗口关闭父弹出窗口一样。 我用过这个方法:

Window _parentWindow = Window.GetWindow(this);

但我不确定如何从 _parentwindow 对象访问控件。

最佳答案

终于找到答案了

Window parentWindow = Window.GetWindow(this);<br/> object obj= parentWindow.FindName("Popup1"); System.Windows.Controls.Primitives.Popup pop = (System.Windows.Controls.Primitives.Popup)obj;<br/> pop.IsOpen = false;

关于c# - 如何从用户控件窗口访问父窗口的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719133/

相关文章:

c# - 在 .NET 中解析文化特定的 Decimal 和 DateTime 值

c# - 消息队列思想

c# - 枚举的显示文本

c# - 当引用构建为控制台应用程序的程序集时,MVC View get 编译错误 (CS0246)。当它构建为类库时 - 它工作正常

Wpf 自定义 LineArrow 形状旋转

wpf - 我可以为 WPF UserControl 创建一个可以返回其控件列表的扩展方法吗?

c# - WPF DevExpress GridControl MVVM 如何获取在代码后面创建的网格布局字符串值到 View 模型

c# - 如何从标准控件在 C# 中创建用户控件?

c# - 使用 C# 在用户控件中注册 javascript

c# - 在用户控件 wpf 中访问按钮的属性