在WPF中使用ListView,往往需要根据情况隐藏或显示ListView的某一列,我们当然可以通过代码来对付它(利用VisualTreeHelper.GetChild(listView)来得到某一个Column,然后隐藏它),但是,既然使用了WPF,我们就要入乡随俗,使用模板来处理。其实模板是个好东西,他提供了非常便利的定制机制,你可以把任意可视元素定义的面目全非——当然如果你愿意
【转载】动态加载wpf控件主题样式资源
    为了增减ListView的Column,我们只需定义多个GridView资源,在运行时根据不同情况使用不同资源,就可以达到增减Column的目的。这里其实都算不上是真正的模板替换。
   
本文附带源代码可以在这里下载到:TestListViewColumnCustom.rar
   
下面就开始吧!
    老规矩,拖出VS2008,Create new project->WPF Application,名字就叫TestListViewColumnCustom吧,我一贯以“Test”开头命名工程,这样表明这是一个测试项目,是对ListViewColumnCustom所做的测试工程。点击OK后进入Window1.xaml设计界面,拽一个ListView进主窗口(听说通过敲Xaml代码来创建控件而不是通过“拽”来创建控件的人都是牛人,所以我喜欢敲代码;当然了,在WPF设计器不成熟的早期阶段,很多控件定制后显示不正常,你不敲代码还能去敲微软?),添加几个Column,并为窗口添加几个Label、CheckBox,运行结果如下:

【转载】动态加载wpf控件主题样式资源
图1
界面

Xaml代码如下:


【转载】动态加载wpf控件主题样式资源
【转载】动态加载wpf控件主题样式资源<Window x:Class="TestListViewColumnCustom.Window1"
【转载】动态加载wpf控件主题样式资源    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
【转载】动态加载wpf控件主题样式资源    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
【转载】动态加载wpf控件主题样式资源    Title
="Window1" Height="300" Width="300">
【转载】动态加载wpf控件主题样式资源       
【转载】动态加载wpf控件主题样式资源   
<Grid>
【转载】动态加载wpf控件主题样式资源       
<Grid.RowDefinitions>
【转载】动态加载wpf控件主题样式资源           
<RowDefinition Height="42"/>
【转载】动态加载wpf控件主题样式资源           
<RowDefinition Height="32"/>
【转载】动态加载wpf控件主题样式资源           
<RowDefinition/>
【转载】动态加载wpf控件主题样式资源           
<RowDefinition Height="60"/>
【转载】动态加载wpf控件主题样式资源       
</Grid.RowDefinitions>
【转载】动态加载wpf控件主题样式资源       
<Label Margin="5" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" Foreground="Maroon">List View Column Custom</Label>
【转载】动态加载wpf控件主题样式资源       
<CheckBox Margin="5" Grid.Row="1" Grid.Column="0" Click="CheckBox_Click" VerticalAlignment="Center">Hide Last Column</CheckBox>
【转载】动态加载wpf控件主题样式资源       
<ListView Name="listView1" Margin="5" Grid.Row="2" Grid.Column="0">
【转载】动态加载wpf控件主题样式资源           
<ListView.View>
【转载】动态加载wpf控件主题样式资源               
<GridView>
【转载】动态加载wpf控件主题样式资源                   
<GridViewColumn Header="Name"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源                   
<GridViewColumn Header="A" Width="60"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源                   
<GridViewColumn Header="B" Width="60"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源                   
<GridViewColumn Header="WillBeHiden"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源               
</GridView>
【转载】动态加载wpf控件主题样式资源           
</ListView.View>
【转载】动态加载wpf控件主题样式资源       
</ListView>
【转载】动态加载wpf控件主题样式资源       
<StackPanel Margin="5" Grid.Row="3" Grid.Column="0">
【转载】动态加载wpf控件主题样式资源           
<Label Foreground="Maroon">Author:He,YuanHui</Label>
【转载】动态加载wpf控件主题样式资源           
<Label Foreground="Maroon">Date:  2008.7.10</Label>
【转载】动态加载wpf控件主题样式资源       
</StackPanel>
【转载】动态加载wpf控件主题样式资源   
</Grid>
【转载】动态加载wpf控件主题样式资源
</Window>
【转载】动态加载wpf控件主题样式资源

【转载】动态加载wpf控件主题样式资源

给ListView添加两个(任意多个)GridView资源,拥有不同的Columns:


【转载】动态加载wpf控件主题样式资源
【转载】动态加载wpf控件主题样式资源
【转载】动态加载wpf控件主题样式资源   
<Window.Resources>
【转载】动态加载wpf控件主题样式资源       
<GridView x:Key="haveHidnColumn">
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="Name"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="A" Width="60"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="B" Width="60"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="WillBeHiden"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源       
</GridView>
【转载】动态加载wpf控件主题样式资源       
<GridView x:Key="haveNoHidnColumn">
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="Name"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="A" Width="60"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源           
<GridViewColumn Header="B" Width="60"></GridViewColumn>
【转载】动态加载wpf控件主题样式资源       
</GridView>
【转载】动态加载wpf控件主题样式资源   
</Window.Resources>
【转载】动态加载wpf控件主题样式资源

为CheckBox添加Click处理事件:


【转载】动态加载wpf控件主题样式资源
【转载】动态加载wpf控件主题样式资源        private void CheckBox_Click(object sender, RoutedEventArgs e)

相关文章:

  • 2021-08-31
  • 2021-08-08
  • 2022-12-23
  • 2022-12-23
  • 2022-03-05
  • 2021-07-06
  • 2021-11-11
  • 2021-07-21
猜你喜欢
  • 2021-06-22
  • 2021-09-03
  • 2022-12-23
  • 2022-02-21
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
相关资源
相似解决方案