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>
致谢:-
我刚开始使用 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>
致谢:-