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);

完成。

你可能感兴趣的:(C#,wpf)