在我的Windows应用程序中,我定义了一个带有列表的窗口。此列表中的项目基于活页夹(目前我以编程方式放入项目)。
<ListView x:Name="event_list" IsEnabled="False">
<ListView.View>
<GridView>
<GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=Type}"/>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=Description}"/>
</GridView>
</ListView.View>
</ListView>
var row = new { Type = "type", Description = "description" };
event_list.Items.Add(row);
假设我想更改第3行并使字体粗体变粗,我该如何实现?
显然,以下内容无法编译:
event_lits.Items[2].FontWeight = FontWeights.Bold;
因为Items
属性只返回我放入的字符串,而不是行本身的视图对象。
渴望回答者的说明: 在wpf窗口中,ListView是this类,而不是this类(这个主题的9/10 google搜索失败的原因)。
答案 0 :(得分:3)
您可以添加一个ItemContainerStyle
,其DataTrigger
绑定到数据对象的属性:
<ListView x:Name="event_list" IsEnabled="False">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<DataTrigger Binding="{Binding IsBold}" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=Type}"/>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=Description}"/>
</GridView>
</ListView.View>
</ListView>
示例数据:
event_list.Items.Add(new { Type = "type", Description = "description" });
event_list.Items.Add(new { Type = "type", Description = "description" });
event_list.Items.Add(new { Type = "type", Description = "description", IsBold = true });
event_list.Items.Add(new { Type = "type", Description = "description" });
在WPF中,通常不应在代码隐藏中设置可视容器的属性。