Попытка применить ресурс SolidColorBrush к HeaderedContentControl BorderBrush

Я бы хотел связать SolidColorBrush из моего окна с другим SolidColorBrush в Моем словаре. Я не нашел что-то подобное, и, возможно, это не возможно...

вот код в моем "ResourceDictionary.xaml"

<SolidColorBrush x:Key="BrushBlueTransparent" Color="#33006D8F"/>

И в моих окнах я хочу ссылку на этот ресурс, как это:

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

Пока этот код не работает...

Я хочу использовать эту ссылку, потому что я хочу использовать этот ресурс на своей странице в несколько раз "", и если цвет должен быть изменен в будущем, это может быть легко изменить таким способом.

Ресурс Brush используется следующим образом:

<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>

1 ответ

Решение

Похоже, ваша проблема в том, что HeaderedContentControl игнорирует его BorderBrush имущество. Есть два способа исправить это: один - заменить HeaderedContentControl"s Template с тем, который отображает границы вокруг контента, но это много проблем. Другой заключается в использовании подкласса HeaderedContentControl который уже имеет шаблон, который вы хотите (мы вернемся к этому последнему).

Один очень простой вариант - просто поставить Border вокруг управления, и переместите Margin к Border так что оранжевая граница будет внутри поля. Это не правильный ответ в вашем конкретном случае, но это хороший общий ответ на вопрос "как мне установить границы между вещами в 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 является базовым классом для различных элементов управления, которые отображают содержимое с заголовком. Подклассы используются гораздо чаще, и у меня есть ощущение, что вы действительно хотите здесь GroupBox, который является одним из тех подклассов. Вы бы использовали его так же, как вы использовали 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>
Другие вопросы по тегам