0

在我们的应用程序中,我们使用 3rd 方库组件。我只需要更改整个模板中的一个值。我怎样才能在不重新定义模板的情况下归档它?

例如,控制模板:

<ControlTemplate TargetType="{x:Type Label}">
        <Border x:Name="PART_MainBorder"
                BorderBrush="Black" 
                BorderThickness="{TemplateBinding BorderThickness}">
            <ContentPresenter/>
        </Border>            
</ControlTemplate>

我需要改变PART_MainBorder.BorderBrush。我怎样才能做到这一点?

我找到了这个链接,但我不敢相信没有其他方法可以做到这一点..

谢谢。

4

1 回答 1

3

我确信在 XAML 中有更优雅的方法可以做到这一点,但回答您的问题模板只不过是一个 cookie cuter,因此您不能只是开始在代码后面更改模板对象的属性。您可以通过已应用模板的控件来修改模板控件属性。万一ControlTemlate它将是模板化控件,并且DataTemplate它将ContentPresenter用于生成内容。因此,假设您有 2 个Labels您在上面应用了模板:

<Label Content="A" x:Name="Label1"/>
<Label Content="B" x:Name="Label2"/>

然后在代码中你可以Border.BorderBrush这样改变:

(Label1.Template.FindName("PART_MainBorder", Label1) as Border).BorderBrush = new SolidColorBrush(Colors.Red);
(Label2.Template.FindName("PART_MainBorder", Label2) as Border).BorderBrush = new SolidColorBrush(Colors.Orange);

值得注意的是2Labels会有不同的 BorderBrush颜色

于 2013-06-17T13:33:33.753 回答