从事件方法中访问父级

时间:2012-02-23 17:05:36

标签: c# wpf calendar datepicker parent-child

我正在尝试在.net 4.0 DatePicker日历中添加一个按钮,我已经有了按钮,但无法弄清楚如何让它访问日历。我正在使用的指南通过在_Click方法中使用this引用来完成它,但当我这样做时,“this”指的是按钮而不是日历。所以我的想法是使用GetParent,然后使用GetChild来获取对日历的引用。但GetParent不适用于'this'。有什么想法吗?

由于

<Style x:Key="DatePickerCalendarStyle" TargetType="{x:Type Calendar}" BasedOn="{StaticResource {x:Type Calendar}}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Calendar}">
                    <Border BorderThickness="{TemplateBinding BorderThickness}"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}">
                        <StackPanel Orientation="Vertical">
                            <StackPanel x:Name="PART_Root" HorizontalAlignment="Center">
                                <CalendarItem x:Name="PART_CalendarItem"
                                              BorderBrush="{TemplateBinding BorderBrush}"
                                              BorderThickness="{TemplateBinding BorderThickness}"
                                              Background="{TemplateBinding Background}"
                                              Style="{TemplateBinding CalendarItemStyle}" />
                                <Button x:Name="PART_TodayButton"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"
                                        Margin="10,0,10,2"
                                        Content="Today"
                                        Click="PART_TodayButton_Click"/>

2 个答案:

答案 0 :(得分:0)

查看VisualTreeHelper Class,特别是GetParent方法

由于日历是您按钮的父级,因此您无需再次登录树,然后再次按下,因此不应使用GetChild

答案 1 :(得分:0)

在你的点击处理程序的参数中你有'sender'(对象):这是你希望找到带有VisualTreeHelper类的父类的发件人。