0
我有一个自定义控件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显示自定义控件。
<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
为快速回答而欢呼。我尝试了你提到的内容,但即使使用最基本的测试和没有Parts的默认样式,ContentPresenter也不会显示任何内容。 – JTK