提问者:小点点

从usercontrol中的父级获取控件(按钮)


我有一个窗口,每个类型有不同的项目和不同的视图。我想从内容控件后面的代码访问窗口(父)中的按钮。

OutputConfigView:

                    <ContentControl Margin="5">
                    <ContentControl.Style>
                        <Style TargetType="ContentControl">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding SelectedOutputRendererTyp}" Value="{x:Type outTypes:XmlBarcodeRenderer}">
                                    <Setter Property="ContentTemplate" Value="{StaticResource OutputRendererView}"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding SelectedOutputRendererTyp}" Value="{x:Type outTypes:CsvBarcodeRenderer}">
                                    <Setter Property="ContentTemplate" Value="{StaticResource CsvOutputRendererView}"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </ContentControl.Style>
                </ContentControl>                          
                      .
                      .

        <Button x:Name="CloseButton"
                Grid.Column="1"
                Click="WindowClose"
                Content="Ok"
                Margin="0 0 0 -5"
                HorizontalAlignment="Center" 
                VerticalAlignment="Bottom">
        </Button>

OutputRenderReview.xaml.cs:

 public partial class OutputRendererView : UserControl
{
    public OutputRendererView()
    {
        InitializeComponent();
    }

    private void Border_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
         var parentWindow = (OutputRendererView)this.Parent;
         var button = (Button)parentWindow.FindName("CloseButton");
    }

在本例中,parentWindow为空。

如何从控件后面的代码访问调用窗口的按钮?


共1个答案

匿名用户

若要访问用户控件内部的按钮,必须首先找到UserControl,然后找到其内部的按钮

var button = (Button)((UserControl)parentWindow.FindName("userControlName")).FindName("CloseButton");