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

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

Это один из шаблонов данных, обратите внимание, что задан цвет BackGround:

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

И это ItemContainerStyle с Border в нем, установленный как 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 или это недостижимо?

...