Есть ли способ автоматически предоставлять свойства и события стандартного элемента управления wpf, обернутого в пользовательский элемент управления? - PullRequest
0 голосов
/ 23 января 2011

Я обернул стандартный элемент управления, как описано здесь Самый быстрый способ унаследовать стандартный элемент управления в WPF?

в пользовательском элементе управления.Есть ли способ автоматически выставлять свойства и события стандартного wpf-элемента управления, заключенного в пользовательский элемент управления?Могу ли я использовать что-то вроде автоматической Bubbling маршрутизации, но как именно?

В противном случае мне придется также создавать обертки свойств и событий для моего компонента, который является громоздким.

1 Ответ

1 голос
/ 23 января 2011

Да, вы должны предоставить новые свойства зависимостей в пользовательском элементе управления, чтобы раскрыть свойства извне. Как пример:

TimeframeSelector.xaml

<DatePicker SelectedDate="{Binding Path=StartDate, 
                            RelativeSource={RelativeSource Mode=FindAncestor, 
                              AncestorType={x:Type ctrl:TimeframeSelector}}}"/>

TimeframeSelector.xaml.cs

    public DateTime StartDate
    {
        get{ return (DateTime)GetValue(StartDateProperty);}
        set { SetValue(StartDateProperty, value); }
    }

    public static readonly DependencyProperty StartDateProperty =
        DependencyProperty.RegisterAttached(
        "StartDate", 
        typeof(DateTime), 
        typeof(TimeframeSelector), 
        new FrameworkPropertyMetadata(
            DateTime.MinValue,
            FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));

Вам необходимо использовать привязку RelativeSource, так как иначе вы не найдете DP в визуальном дереве. Если вы используете Visual Studio, есть шаблон с именем propdp, который можно использовать для очень быстрого создания свойств зависимости.

...