尝试将 SolidColorBrush 资源应用于 HeaderedContentControl BorderBrush

Trying to apply SolidColorBrush resource to HeaderedContentControl BorderBrush

我想 link 我的 Window 中的一个 SolidColorBrush 到我的字典中的另一个 SolidColorBrush。我没有找到这样的东西,可能是不可能的...

这是我的 "ResourceDictionary.xaml"

中的代码
<SolidColorBrush x:Key="BrushBlueTransparent" Color="#33006D8F"/>

在我的 windows 中,我想要一个 link 这个资源,如下所示:

<SolidColorBrush x:Key="ControlColor" Color="{Binding Source={DynamicResource BrushEvasanOrange}}"/>

目前,此代码不起作用...

我想使用这个 link 因为我想在我的页面中以多个“”使用这个资源,如果将来必须改变颜色,用这种方式可以很容易地改变.

画笔资源是这样使用的:

<HeaderedContentControl 
    x:Name="_demandeur" 
    BorderBrush="{DynamicResource BrushEncadre}" 
    BorderThickness="1" 
    Padding="10" 
    Margin="0,20,0,0" 
    Header="{x:Static p:Resources.EV_Demandeur}"
    >
    <WrapPanel 
        Margin="0" 
        Orientation="Horizontal" 
        HorizontalAlignment="Left"
        >
        <TextBlock 
            TextWrapping="Wrap" 
            FontWeight="Normal" 
            Text="text"
            />
    </WrapPanel>
</HeaderedContentControl>

听起来你的问题是 HeaderedContentControl 忽略了它的 BorderBrush 属性。有两种方法可以解决此问题:一种是将 HeaderedContentControlTemplate 替换为在内容周围显示边框的方法,但这很麻烦。另一种方法是使用 HeaderedContentControl 的子 class,它已经有了您想要的模板(我们将在最后进行)。

一个非常简单的选项是简单地在控件周围放置一个 Border,并将 Margin 也移动到 Border,因此橙色边框线将位于利润。在您的具体情况下,这不是正确的答案,但它是对 "how do I put a border around things in XAML?"

的一个很好的一般性答案
<Border
    BorderBrush="{StaticResource BrushEncadre}" 
    BorderThickness="1" 
    Margin="0,20,0,0" 
    >
    <HeaderedContentControl 
        x:Name="_demandeur" 
        Padding="10" 
        Header="{x:Static p:Resources.EV_Demandeur}"
        >
        <WrapPanel 
            Margin="0" 
            Orientation="Horizontal" 
            HorizontalAlignment="Left" >
            <TextBlock 
                TextWrapping="Wrap" 
                FontWeight="Normal" 
                Text="text"
                />
        </WrapPanel>
    </HeaderedContentControl>
</Border>

但我想知道 HeaderedContentControl 是否真的是您想要的。 HeaderedContentControl 是各种控件的基础 class,这些控件显示带有 header 的内容。 subclasses 更常用,我感觉你在这里真正想要的是 GroupBox,它是那些 subclasses 之一。您可以像使用 HeaderedContentControl:

一样使用它
<GroupBox 
    x:Name="_demandeur" 
    Padding="10" 
    Margin="0,20,0,0" 
    Header="{x:Static p:Resources.EV_Demandeur}"
    BorderBrush="{StaticResource BrushEncadre}" 
    BorderThickness="1" 
    >
    <WrapPanel 
        Margin="0" 
        Orientation="Horizontal" 
        HorizontalAlignment="Left" >
        <TextBlock 
            TextWrapping="Wrap" 
            FontWeight="Normal" 
            Text="text"
            />
    </WrapPanel>
</GroupBox>