Доступ к родителю из метода события - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь добавить кнопку в календарь .net 4.0 DatePicker, и у меня есть кнопка на месте, но я не могу понять, как предоставить ей доступ к календарю.Руководство, которое я использую, делает это с помощью ссылки this в методе _Click, но когда я это делаю, «this» ссылается на кнопку, а не на календарь.Поэтому я подумал о том, чтобы использовать GetParent, а затем GetChild, чтобы получить ссылку на календарь.Но GetParent не доступен для меня из «этого».Есть идеи?

Спасибо

<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 голосов
/ 23 февраля 2012

в аргументах вашего обработчика кликов у вас есть «отправитель» (объект): это от отправителя, который вы хотите найти родителя с классом VisualTreeHelper.

0 голосов
/ 23 февраля 2012

Взгляните на VisualTreeHelper Class , в частности, GetParent метод

Поскольку календарь является родительским для вашей кнопки, вам не нужно подниматься вверх по дереву изатем снова вниз, поэтому вы не должны использовать GetChild

...