Есть ли способ привязки к свойству шаблонного элемента управления?

#wpf #controltemplate

#wpf #controltemplate

Вопрос:

Я хочу установить цвет фона элемента ListViewItem на цвет, который используется в DataTemplate элемента.

Это одна из таблиц данных, обратите внимание на заданный цвет фона:

 <DataTemplate DataType="{x:Type viewmodel:DataPointViewModel}">
    <UniformGrid Columns="2" Background="LimeGreen">
        <TextBlock Text="{Binding Name}"/>
        <TextBlock Text="{Binding Description}"/>
    </UniformGrid>
</DataTemplate>
 

И это ItemContainerStyle с границей в нем, заданной как ItemContainerStyle ListView:

 <Style TargetType="{x:Type ListViewItem}">
    <Setter Property="Background" Value="Yellow"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListViewItem}">
                <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
                        Background="{TemplateBinding BackGround}">
                    <ContentPresenter/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
 

Я хочу избежать использования цвета фона в самой ViewModel. До сих пор все мои усилия приводили только к ошибкам привязки из привязок, таких как:

 {Binding BackGround, RelativeSource={RelativeSource AncestorType=UniformGrid}}
 

Если для привязки установлено значение «TemplateBinding BackGround», он успешно использует цвет, который я установил в самом стиле, чего я и ожидал.

Как мне привязаться к свойству BackGround в DataTemplate или это невозможно?

Комментарии:

1. Разве ваша uniformgrid не находится в datatemplate поверх элемента listviewitem? Следовательно, поверх границы, фон которой вы просите установить?

2. Да, это так, но оно не заполняет всю границу. UniformGrid — это просто пример, некоторые из моих других шаблонов используют другие элементы управления. Я хочу установить цвет в шаблоне и ссылаться на него.