gpt4 book ai didi

wpf - 如何将属性传递给 WPF 样式

转载 作者:行者123 更新时间:2023-12-02 20:34:44 24 4
gpt4 key购买 nike

我正在尝试为 WPF ItemContainerStyle 编写一个可重用的模板。

此模板更改了 TabControl 的项目的外观。该模板适用于应用程序中的多个位置。

在每个使用它的地方我希望能够向它传递不同的参数。例如:更改项目边框的边距:

    <Style x:Key="TabItemStyle1" TargetType="{x:Type TabItem}">

<Setter Property="Margin" Value="10,0"/>

<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid SnapsToDevicePixels="true">
<Border x:Name="Bd" Width="80"
Background="Gray"
Margin="{TemplateBinding Margin}">
<ContentPresenter x:Name="Content"
ContentSource="Header" />
</Border>
</Grid>
<ControlTemplate.Triggers>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
...
<TabControl ItemContainerStyle="{DynamicResource TabItemStyle1}">

在使用样式的地方我想写一些类似的内容:

ItemContainerStyle="{DynamicResource TabItemStyle1 Margin='5,0'}"

<TabControl Margin="78,51,167,90" ItemContainerStyle="{DynamicResource TabItemStyle1}"
ItemContainerStyle.Margin="5,0">

动机是在具有不同边距的不同地方使用此模板。有办法做到这一点吗?

谢谢

最佳答案

您可以使用附加属性来完成此操作。我写了一篇博客文章解释如何做到这一点:

http://www.thomaslevesque.com/2011/10/01/wpf-creating-parameterized-styles-with-attached-properties/

另一种选择是使用DynamicResource,并以派生样式重新定义资源

关于wpf - 如何将属性传递给 WPF 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10479697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com