Когда вы это делаете, это означает, что все содержимое пользовательского элемента управления заменяется предоставленным вами содержимым.
<custom:FullWidthExpander Width="200" HeaderBackground="Gray">
<Button />
</custom:FullWidthExpander>
Чтобы обойти это, вам нужно немного по-другому разместить контент в своем пользовательском контроле.
Сначала добавьте свойство зависимости для пользовательского элемента управления.
public object UserControlContent
{
get { return (object)GetValue(UserControlContentProperty); }
set { SetValue(UserControlContentProperty, value); }
}
public static readonly DependencyProperty UserControlContentProperty =
DependencyProperty.Register("UserControlContent", typeof(object), typeof(FullWidthExpander),
new PropertyMetadata(null));
Затем привяжите это к презентатору содержимого в xaml пользовательского элемента управления, а также определите имя для своего пользовательского элемента управления, например x: Name = "Root".
<Expander Header="My expander header">
<Expander.Template>
<ControlTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="15"/>
</Grid.RowDefinitions>
<ContentPresenter x:Name="ContentPresenter" Grid.Row="0" Content="{Binding UserControlContent, ElementName=Root}" />
<ToggleButton Grid.Row="1" Content="Togglebutton">
</ToggleButton>
</Grid>
</ControlTemplate>
</Expander.Template>
</Expander>
И, наконец, вы определяете содержимое содержимого в maindwindow xaml как таковое.
<custom:FullWidthExpander>
<custom:FullWidthExpander.UserControlContent>
<Button Content="Click me"/>
</custom:FullWidthExpander.UserControlContent>
</custom:FullWidthExpander>
person
Janne Matikainen
schedule
21.01.2016
ControlTemplate
? И могу ли я с уверенностью предположить, чтоFullWidthExpander
является пользовательскимUserControl
? Я сделал быстрый тест с обычным расширителем только в XAML в MainWindow, и он работает отлично, поэтому я предполагаю, что ваша проблема как-то связана с вашей иерархией управления. - person Rachel   schedule 21.01.2016