Выставляя DependencyProperty для вашего внутреннего контроля, вы решили половину проблемы - то есть вы можете установить индивидуальные свойства в xaml.
Следующий шаг заключается в том, чтобы эти средства определения свойств влияли на дочерний элемент управления.
Существует два варианта достижения этого.
В шаблоне управления определите свой дочерний элемент управления и используйте привязки для каждого свойства, которое вы хотите установить.
Определите элемент контейнера в родительском шаблоне управления и установите его контент вашему ребенку всякий раз, когда изменяется свойство зависимостей.
Хотя оба этих методов могли бы работать, вы можете обнаружить, что решение, содержащее наименьшее количество кода, и наибольшую гибкость, чтобы выставить свойство Style для дочернего элемента управления и применить, что в контрольный шаблон.
public class ParentControl : Control
{
public Style ChildControlStyle
{
get { return (Style)GetValue(ChildControlStyleProperty); }
set { SetValue(ChildControlStyleProperty, value); }
}
public static readonly DependencyProperty ChildControlStyleProperty =
DependencyProperty.Register("ChildControlStyle",
typeof(Style),
typeof(ParentControl),
new PropertyMetadata(null));
}
<Style TargetType="ParentControl">
<Setter Property="ChildControlStyle">
<Setter.Value>
<Style TargetType="ChildControl">
<!-- setters -->
</Style>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ParentControl">
<Grid>
<ChildControl Style="{TemplateBinding ChildControlStyle}" />
<!-- other stuff -->
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я считаю, что это очень хороший ответ. и спасибо за это. к сожалению, может быть только один знак, и этот парень придумал решение, которое немного привлекательнее * в моем случае *. но я все еще ваш хороший! –