<Grid Grid.IsSharedSizeScope="True" Name="treeGrid" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.Resources>
<local:LevelConverter x:Key="levelConverter" />
<HierarchicalDataTemplate ItemsSource="{Binding Items}"
DataType="{x:Type local:DirectoryRecord}">
<Grid ShowGridLines="False">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="rowHeaderColumn"/>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition SharedSizeGroup="column1"/>
<ColumnDefinition SharedSizeGroup="column2"/>
<ColumnDefinition SharedSizeGroup="column3"/>
<ColumnDefinition SharedSizeGroup="column4"/>
<ColumnDefinition SharedSizeGroup="column5"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding Name}"></TextBlock>
<Rectangle Grid.Column="1">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource levelConverter}">
<Binding Path="Level"></Binding>
<Binding ElementName="treeViewItemToMeasure" Path="ActualWidth"></Binding>
</MultiBinding>
</Rectangle.Width>
</Rectangle>
<TextBlock Grid.Column="2"
Text="{Binding LastAccessed}"></TextBlock>
<TextBlock Grid.Column="3"
Text="{Binding Files.Count}"></TextBlock>
<TextBlock Grid.Column="4"
Text="{Binding Inherited}"></TextBlock>
<Grid.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="Aquamarine" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Inherited}" Value="True">
<Setter Property="Background" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
</HierarchicalDataTemplate>
</Grid.Resources>
<TreeView>
<!-- My binding goes here -->
</TreeView>
</Grid>
I’m trying to change the background of the TextBlock contained within my custom Grid(TreeGrid), however this code fails with XamlParseException
‘TextBlock’ TargetTypes does not match type of element ‘Grid’.
Instead of defining a style inside a
Grid.Stylesection, you have to declare it as theGrid.ResourceStyle, with theTargetTypespecified, i.e.