WPF MVVM - TreeView 中项目的样式丢失

WPF MVVM - Style is lost for items in TreeView

我刚开始使用 WPF,但遇到了样式问题。 UserControl.

中的所有 TextBlock 都使用了一种样式
<UserControl.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Margin" Value="10" />
    </Style>
</UserControl.Resources>

它对第一个 StackPanel 中的 TextBlock 非常有效,但对 TreeView 中的 TextBlock 无效。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>

    <StackPanel Grid.Row="1" Orientation="Horizontal">
        <TextBlock Text="{Binding Name}" />
        <TextBlock Text="{Binding Description}" />
    </StackPanel>

    <TreeView ItemsSource="{Binding Tests}" Grid.Row="2">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type dml:TestCase}" ItemsSource="{Binding Tasks}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}" />
                    <TextBlock Text="{Binding Description}" />
                </StackPanel>
            </HierarchicalDataTemplate>

            <!--Task Template-->
            <HierarchicalDataTemplate DataType="{x:Type dml:Task}">
                <TextBlock Text="{Binding Name}" />
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>
</Grid>

有没有办法在 TreeView 中的每个 TextBlock 上设置样式?

只需在您的 ItemTemplate 中执行即可:

<HierarchicalDataTemplate>
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}" Margin="0,0,10,0" />
        <TextBlock Text="{Binding Description}" />
    </StackPanel>
</HierarchicalDataTemplate>

好的,我们开始,

<TreeView ItemsSource="{Binding Tests}" >
        <TreeView.Resources>
            <HierarchicalDataTemplate ItemsSource="{Binding Tasks}" DataType="Hdtable1">
                <StackPanel Orientation="Horizontal">
                    <StackPanel.Resources>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="Margin" Value="10"/>
                        </Style>
                    </StackPanel.Resources>
                    <TextBlock Text="{Binding Name}" />
                    <TextBlock Text="{Binding Description}" />
                </StackPanel>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate DataType="HDTEmplate">
                <TextBlock Text="{Binding Name}" />
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>

致谢:-