如何使 ListViewItem 的模板样式和 ListView.ItemTemplate 一起工作?
How to make both ListViewItem's template style and ListView.ItemTemplate working?
我的 App.xaml 中有以下代码。当我在 ListViewItem 上 click/hover 时,我重写了模板以使背景保持透明。
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Height" Value="{StaticResource RowHeight}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border
BorderBrush="Transparent"
BorderThickness="0"
Background="{TemplateBinding Background}">
<GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我昨天问了一个问题
所以我在下面写了,如果我不应用上面的样式,它会非常有效。
如果这样做,我将在 ListView 中看不到任何内容。
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ProgressBar Grid.ColumnSpan="2" Grid.ZIndex="0" Value="{Binding ProgressBarValue}"/>
<Label Grid.Column="0" Grid.ZIndex="1" Content="{Binding CCC}"/>
<Label Grid.Column="1" Grid.ZIndex="1" Content="{Binding DDD}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
我确实需要使背景透明,但为什么这些代码不能协同工作?我该如何改进?
另外,你们怎么知道这里出了什么问题?我不知道在哪里可以找到 reference/explanations 或研究 xaml 代码背后的机制..
像这样尝试:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border
BorderBrush="Transparent"`enter code here`
BorderThickness="0"
Background="{TemplateBinding Background}">
<GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="Red">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ProgressBar Grid.ColumnSpan="2" Grid.ZIndex="0" Value="30"/>
<Label Grid.Column="0" Grid.ZIndex="1" Content="{binding}"/>
<Label Grid.Column="1" Grid.ZIndex="1" Text="{binding}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
我正在使用 WPF 4.5 Unleashed 这本书作为 Xaml 的参考。
我的 App.xaml 中有以下代码。当我在 ListViewItem 上 click/hover 时,我重写了模板以使背景保持透明。
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Height" Value="{StaticResource RowHeight}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border
BorderBrush="Transparent"
BorderThickness="0"
Background="{TemplateBinding Background}">
<GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我昨天问了一个问题
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ProgressBar Grid.ColumnSpan="2" Grid.ZIndex="0" Value="{Binding ProgressBarValue}"/>
<Label Grid.Column="0" Grid.ZIndex="1" Content="{Binding CCC}"/>
<Label Grid.Column="1" Grid.ZIndex="1" Content="{Binding DDD}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
我确实需要使背景透明,但为什么这些代码不能协同工作?我该如何改进?
另外,你们怎么知道这里出了什么问题?我不知道在哪里可以找到 reference/explanations 或研究 xaml 代码背后的机制..
像这样尝试:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border
BorderBrush="Transparent"`enter code here`
BorderThickness="0"
Background="{TemplateBinding Background}">
<GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="Red">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ProgressBar Grid.ColumnSpan="2" Grid.ZIndex="0" Value="30"/>
<Label Grid.Column="0" Grid.ZIndex="1" Content="{binding}"/>
<Label Grid.Column="1" Grid.ZIndex="1" Text="{binding}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
我正在使用 WPF 4.5 Unleashed 这本书作为 Xaml 的参考。