使用指定的ControlTemplate设置UserControl的填充?

时间:2012-09-30 10:21:07

标签: c# wpf controltemplate

我最近为UserControl创建了一个WrapPanel来可视化一些数据。 我为它应用了一个Padding,以便在每个元素之间留出一些空间。

第一个版本看起来像这样:

<UserControl x:Class="IFCS.EntityOverviewPanel"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:l="clr-namespace:IFCS"
         mc:Ignorable="d"
         Padding="5, 5, 5, 5"
         d:DesignHeight="300" d:DesignWidth="300">
    <!-- Code -->
</UserControl>

现在我刚刚应用ControlTemplate来覆盖我的Padding设置。

目前的版本如下:

<UserControl x:Class="IFCS.EntityOverviewPanel"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:l="clr-namespace:IFCS"
         mc:Ignorable="d"
         d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Template>
        <ControlTemplate TargetType="UserControl">
            <!-- Code -->
        </ControlTemplate>
    </UserControl.Template>
</UserControl>

我想再次Padding申请UserControl,但我尝试的所有内容都无效。 我尝试使用

申请Style
<UserControl.Style>
    <Style TargetType="{x:Type UserControl}">
        <Setter Property="Padding" Value="5, 5, 5, 5"/>
    </Style>
</UserControl.Style>

但这不起作用。 在“标题”中设置Padding也不起作用。

我必须在哪里设置Padding值才能获得与第一个版本相同的结果?

1 个答案:

答案 0 :(得分:3)

<UserControl Padding="5,5,5,5">
    <UserControl.Template>
        <ControlTemplate TargetType="UserControl">
            <ContentPresenter Margin="{TemplateBinding Padding}" />
            <!-- Code -->
        </ControlTemplate>
    </UserControl.Template>

    <!-- Content -->
</UserControl>