Да, вы должны предоставить новые свойства зависимостей в пользовательском элементе управления, чтобы раскрыть свойства извне. Как пример:
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
, который можно использовать для очень быстрого создания свойств зависимости.