WPF ListView 改变某行某列的属性值(背景颜色)

前言:

WPf 的listView简单的绑定数据之后,没办法访问内部的行列item属性,思考:
怎样才能将listView中的某一行中的某一列进行背景颜色的切换。

正常用法:

<ListView x:Name="listView1" ItemsSource="{Binding items}" Width="641" Margin="0,0,0,-5"   ItemContainerStyle="{StaticResource ListViewItemStyle}">
     <ListView.View>
         <GridView>
              <GridViewColumn Header="     序号" Width="130"  DisplayMemberBinding="{Binding number}">
              </GridViewColumn>
              <GridViewColumn Header="     名称" Width="110" DisplayMemberBinding="{Binding name}">
              </GridViewColumn>
          </GridView>
      </ListView.View>
  </ListView>

如上代码所示,只需要将listView的itemssoure绑定好特定的数据,就可以进行简单的展示。

cs代码如下:

List<ListViewItem> ITEMS = new List<ListViewItem>();
// 资源绑定
listView1.ItemsSource = ITEMS;

其中:需要自己创建一个对应的类进行GridViewColumn数据对应

// 数据列表list
        public class DataClass
        {
            public string number { get; set; }
            public string name { get; set; }
        }

直接使用,然后插入就好:

   ListViewItem one_item = new ListViewItem();
   one_item.Content = new DataClass()
   {
       number = "11",
       name = "hello_world"

   };
   ITEMS.Add(one_item);
>>>>>>>>>>>>>>> 这时候就会引出前言的问题,我插入了数据之后,我该怎么对某一格的数据进行属性修改呢?

答:插入了之后,我暂时没有找到能修改特定格子属性的方法,但是我想到了另外一个方法;直接在插入数据的同属,将数据也进行绑定,这样就可以通过不同的判断条件进行不同属性的修改。

XAML代码:

<ListView x:Name="listView1" ItemsSource="{Binding items}" Width="641" Margin="0,0,0,-5"   ItemContainerStyle="{StaticResource ListViewItemStyle}">
     <ListView.View>
         <GridView>
              <GridViewColumn Header="     序号" Width="130">
	              <GridViewColumn.CellTemplate>
                      <DataTemplate>
                          <TextBlock Width="110" TextAlignment="Center" Background="{Binding numberBackgroud}" Text="{Binding number}"></TextBlock>
                      </DataTemplate>
                  </GridViewColumn.CellTemplate>
              </GridViewColumn>
              <GridViewColumn Header="     名称" Width="110">
              	<GridViewColumn.CellTemplate>
                      <DataTemplate>
                          <TextBlock Width="110" TextAlignment="Center" Background="{Binding nameBackgroud}" Text="{Binding name}"></TextBlock>
                      </DataTemplate>
                  </GridViewColumn.CellTemplate>
              </GridViewColumn>
          </GridView>
      </ListView.View>
  </ListView>

cs代码:

        public class DataClass
        {
            public string number { get; set; }
            public string numberBackground { get; set; }
            public string name { get; set; }
            public string nameBackground { get; set; }
        }

	   List<ListViewItem> ITEMS = new List<ListViewItem>();
       // 资源绑定
	   listView1.ItemsSource = ITEMS;
	   ListViewItem one_item = new ListViewItem();
	   one_item.Content = new DataClass()
	   {
	       number = "11",
	       name = "hello_world",
	       numberBackground = "red",
	       nameBackground = "Yellow",
	
	   };
	   ITEMS.Add(one_item);

完成。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF中的ListView控件可以通过设置ItemContainerStyle来自定义行的背景颜色。 首先,我们需要在XAML中定义ListView控件,并将其绑定到数据源。然后,可以使用ListView的ItemContainerStyle属性设置行的样式。 要设置行的背景颜色,可以使用XAML中的触发器(Trigger)来实现。我们可以为ListView的ItemContainerStyle属性添加一个样式(Style),并在该样式内使用触发器来根据条件设置行的背景颜色。 以下是一个示例代码: ```xml <ListView ItemsSource="{Binding YourDataSource}"> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Style.Triggers> <Trigger Property="ItemsControl.AlternationIndex" Value="0"> <Setter Property="Background" Value="LightGray"/> </Trigger> <Trigger Property="ItemsControl.AlternationIndex" Value="1"> <Setter Property="Background" Value="White"/> </Trigger> </Style.Triggers> </Style> </ListView.ItemContainerStyle> </ListView> ``` 在上述代码中,我们使用了AlternationIndex属性来为交替的行设置不同的背景颜色。AlternationIndex属性将自动递增并应用于ListView的每一行。通过将AlternationIndex的与触发器中的匹配,我们可以为奇数行和偶数行分别设置不同的背景颜色。 在示例中,我们为奇数行设置了浅灰色(LightGray)的背景颜色,偶数行设置了白色(White)的背景颜色。你可以根据需要自定义触发器的条件和背景颜色。 通过这种方式,我们可以自定义ListView行的背景颜色

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值