#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 — это просто пример, некоторые из моих других шаблонов используют другие элементы управления. Я хочу установить цвет в шаблоне и ссылаться на него.