У меня есть пользовательский контроль, NumericUpDown. Я создал именованный стиль, в котором я хочу расширить элемент управления, в этом случае, обернув его в грид и добавив метку.ContentPresenter не отображает пользовательский контроль в стиле
Когда я использую кнопку в качестве основного примера, я могу просто расширить ее на ControlTemplate. Оригинальная кнопка отображается в расположении ContentPresenter, и я могу добавить к ней другие элементы управления для компоновки и т. Д.
ControlTemplate TargetType="{x:Type Button}">
<Border BorderThickness="3" BorderBrush="Red" Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
</ControlTemplate>
Однако при использовании моего пользовательского элемента управления, то ContentPresenter не показывает контроль NumericUpDown, он не показывает абсолютно ничего. Даже в самой базовой форме я не могу заставить ContentPresenter показать Custom Control.
<Style x:Key="LabeledNumericUpDown2" TargetType="{x:Type controls:NumericUpDown}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:NumericUpDown}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="Blabla"/>
<ContentPresenter Grid.Column="1"/>
<!--<controls:NumericUpDown Grid.Column="1"/>-->
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я не могу для жизни меня выяснить, что мне не хватает.
Спасибо за вашу помощь, это очень ценится!
Редактировать
NumericUpDown пользовательский элемент управления имеет стиль по умолчанию, который определяет элемент управления NumericUpDown. Я хочу распространить это на названный стиль.
<Style TargetType="{x:Type controls:NumericUpDown}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Margin" Value="0" />
<Setter Property="Height" Value="18" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:NumericUpDown}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="16" />
</Grid.ColumnDefinitions>
<TextBox x:Name="PART_TextBox" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Top" Padding="0" Margin="0"
Text="{Binding DisplayValue, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" />
<Border Grid.Column="1" BorderThickness="0 1 1 1" BorderBrush="#FFABADB3">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="8" />
<RowDefinition Height="8" />
</Grid.RowDefinitions>
<Button x:Name="PART_ButtonUp" Grid.Row="0" Content="▲" FontSize="4" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" BorderThickness="0" Padding="6 1 0 0" />
<Button x:Name="PART_ButtonDown" Grid.Row="1" Content="▼" FontSize="4" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" BorderThickness="0" Padding="6 1 0 0" />
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Извините, вопрос непонятен. Пользовательский элемент управления также имеет стиль по умолчанию. Я добавлю это к вопросу. – JTK
Обновлен мой ответ. – toadflakz
Приветствия за быстрый ответ. Я попробовал то, что вы упомянули, но даже с самым базовым тестом и стилем по умолчанию без частей, ContentPresenter ничего не отображает. – JTK