WPF ListView显示GridLine(可选), 通过附加属性修改
2017-08-17 11:38
525 查看
效果见上一篇。
Style:
附加属性类:
使用:
Style:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:ImageButtonTest01.Themes" xmlns:controls="clr-namespace:ImageButtonTest01.Control"> <!--GridLine--> <!--<Visibility x:Key="ListView.GridLine.Horizontal.Visibility">Collapsed</Visibility> <Visibility x:Key="ListView.GridLine.Vertical.Visibility">Collapsed</Visibility>--> <!--<Visibility x:Key="ListView.GridLine.Horizontal.Visibility">Visible</Visibility> <Visibility x:Key="ListView.GridLine.Vertical.Visibility">Visible</Visibility>--> <!--<sys:Double x:Key="ListView.GridLine.Horizontal.Width">2</sys:Double> <sys:Double x:Key="ListView.GridLine.Vertical.Width">1</sys:Double>--> <sys:Double x:Key="ListView.Header.Line.Vertical.Width">1</sys:Double> <!--第3个值(右边间距)必须和列线width相同--> <Thickness x:Key="ListView.Thumb.Margin">0,0,-1,0</Thickness> <sys:Double x:Key="ListView.Header.Height">40</sys:Double> <SolidColorBrush x:Key="ListView.Header.Background">#80365080</SolidColorBrush> <SolidColorBrush x:Key="ListView.Header.Foreground">#80FFFFFF</SolidColorBrush> <LinearGradientBrush x:Key="ListView.GridLine.Horizontal.Brush" StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStop Color="Orange" Offset="0"/> <GradientStop Color="Black" Offset="0.5"/> <GradientStop Color="Orange" Offset="1"/> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <LinearGradientBrush x:Key="ListView.GridLine.Horizontal.MouseOver.Brush" StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStop Color="OrangeRed" Offset="0"/> <GradientStop Color="WhiteSmoke" Offset="0.5"/> <GradientStop Color="OrangeRed" Offset="1"/> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <LinearGradientBrush x:Key="ListView.GridLine.Vertical.Brush" StartPoint="0,0" EndPoint="1,0"> <LinearGradientBrush.GradientStops> <GradientStop Color="WhiteSmoke" Offset="0"/> <GradientStop Color="Black" Offset="0.5"/> <GradientStop Color="WhiteSmoke" Offset="1"/> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <Style x:Key="ListViewHeaderThumb" TargetType="Thumb"> <Setter Property="Background" Value="Chocolate"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border Padding="{TemplateBinding Padding}" Background="Transparent" Width="10" Margin="{StaticResource ListView.Thumb.Margin}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Rectangle Width="{StaticResource ListView.Header.Line.Vertical.Width}" Fill="{StaticResource ListView.GridLine.Vertical.Brush}" HorizontalAlignment="Right" VerticalAlignment="Stretch"/> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="DefaultListViewHeader" TargetType="GridViewColumnHeader"> <Setter Property="Foreground" Value="{StaticResource ListView.Header.Foreground}"/> <Setter Property="Background" Value="{StaticResource ListView.Header.Background}"/> <Setter Property="SnapsToDevicePixels" Value="True"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Margin" Value="0"/> <Setter Property="Padding" Value="0"/> <Setter Property="MinHeight" Value="20"/> <Setter Property="Height" Value="{StaticResource ListView.Header.Height}"/> <Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderBrush" Value="Green"/> <Setter Property="FontSize" Value="18"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="GridViewColumnHeader"> <Border x:Name="HeaderBorder" Padding="0" Margin="0,0,0,0" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <ContentPresenter x:Name="HeaderContent" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="0" RecognizesAccessKey="True" HorizontalAlignment="Center" VerticalAlignment="Center" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> <Thumb x:Name="PART_HeaderGripper" Grid.Column="1" HorizontalAlignment="Right" Style="{StaticResource ListViewHeaderThumb}"/> </Grid> </Border> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding IsDragging, ElementName=PART_HeaderGripper}" Value="True"> <Setter Property="Foreground" Value="Lavender"/> <Setter Property="FontSize" Value="20"/> <Setter TargetName="HeaderBorder" Property="Background" Value="Violet"/> </DataTrigger> <Trigger Property="IsPressed" Value="true"> <Setter TargetName="HeaderContent" Property="Margin" Value="6,1,6,1" /> <Setter Property="Foreground" Value="Cyan"/> <Setter Property="FontSize" Value="20"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <TextBlock TextBlock.FontWeight="SemiBold" Text="{Binding}" TextAlignment="Center"/> </DataTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="Role" Value="Floating"> <Setter Property="Opacity" Value="0.7"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="GridViewColumnHeader"> <Canvas Name="PART_FloatingHeaderCanvas"> <Rectangle Fill="#60000000" Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding ActualHeight}" /> </Canvas> </ControlTemplate> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> <Style x:Key="DefaultGridViewScrollViewerStyle" TargetType="{x:Type ScrollViewer}" BasedOn="{StaticResource {x:Static GridView.GridViewScrollViewerStyleKey}}"> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollViewer}"> <Grid Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <DockPanel Margin="{TemplateBinding Padding}"> <ScrollViewer DockPanel.Dock="Top" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> <GridViewHeaderRowPresenter AllowsColumnReorder="{Binding TemplatedParent.View.AllowsColumnReorder, RelativeSource={RelativeSource TemplatedParent}}" ColumnHeaderContainerStyle="{Binding TemplatedParent.View.ColumnHeaderContainerStyle, RelativeSource={RelativeSource TemplatedParent}}" ColumnHeaderToolTip="{Binding TemplatedParent.View.ColumnHeaderToolTip, RelativeSource={RelativeSource TemplatedParent}}" ColumnHeaderStringFormat="{Binding TemplatedParent.View.ColumnHeaderStringFormat, RelativeSource={RelativeSource TemplatedParent}}" ColumnHeaderContextMenu="{Binding TemplatedParent.View.ColumnHeaderContextMenu, RelativeSource={RelativeSource TemplatedParent}}" ColumnHeaderTemplate="{Binding TemplatedParent.View.ColumnHeaderTemplate, RelativeSource={RelativeSource TemplatedParent}}" Columns="{Binding TemplatedParent.View.Columns, RelativeSource={RelativeSource TemplatedParent}}" ColumnHeaderTemplateSelector="{Binding TemplatedParent.View.ColumnHeaderTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" Margin="0" Visibility="Visible" x:Name="PART_Header" Height="auto" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </ScrollViewer> <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" KeyboardNavigation.DirectionalNavigation="Local" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </DockPanel> <ScrollBar x:Name="PART_HorizontalScrollBar" Cursor="Arrow" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0.0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" /> <ScrollBar x:Name="PART_VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0.0" Orientation="Vertical" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" /> </Grid> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding Columns, ElementName=PART_Header}" Value="{x:Null}"> <Setter Property="Visibility" TargetName="PART_Header" Value="Collapsed"></Setter> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <!--ItemContainerStyle--> <Style x:Key="DefaultListViewItemContainerStyle" TargetType="{x:Type ListViewItem}"> <Setter Property="Margin" Value="0"/> <Setter Property="Padding" Value="0"/> <!--也可以通过BorderThickness和BorderBrush的Bottom设置水平线条宽度和颜色--> <Setter Property="BorderBrush" Value="LightGray"/> <Setter Property="BorderThickness" Value="0,0,0,0"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <Setter Property="FontSize" Value="16"/> <!--<Setter Property="controls:ListViewHelper.HorizontalLineWidth" Value="3"/>--> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListViewItem}"> <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <!--<controls:GridViewRowPresenterWithGridLines Height="60" Columns="{TemplateBinding GridView.ColumnCollection}" Margin="{TemplateBinding Padding}" GridLineWidth="{StaticResource ListView.GridLine.Vertical.Width}" GridLineBrush="{StaticResource ListView.GridLine.Vertical.Brush}" GridLinesVisibility="{StaticResource ListView.GridLine.Horizontal.Visibility}"/> --><!--水平线条--><!-- <Rectangle x:Name="horLine" Grid.Row="1" Height="{StaticResource ListView.GridLine.Horizontal.Width}" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Fill="{StaticResource ListView.GridLine.Horizontal.Brush}" Visibility="{StaticResource ListView.GridLine.Vertical.Visibility}"/>--> <controls:GridViewRowPresenterWithGridLines Height="60" Columns="{TemplateBinding GridView.ColumnCollection}" Margin="{TemplateBinding Padding}" GridLineWidth="{Binding Path=(controls:ListViewHelper.VerticalLineWidth),RelativeSource={RelativeSource TemplatedParent}}" GridLineBrush="{Binding Path=(controls:ListViewHelper.VerticalLineBrush),RelativeSource={RelativeSource TemplatedParent}}" GridLinesVisibility="{Binding Path=(controls:ListViewHelper.VerticalLineVisibility),RelativeSource={RelativeSource TemplatedParent}}"/> <!--水平线条--> <Rectangle x:Name="horLine" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="{Binding Path=(controls:ListViewHelper.HorizontalLineWidth),RelativeSource={RelativeSource TemplatedParent}}" Fill="{Binding Path=(controls:ListViewHelper.HorizontalLineBrush),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(controls:ListViewHelper.HorizontalLineVisibility),RelativeSource={RelativeSource TemplatedParent}}"/> </Grid> </Border> <ControlTemplate.Triggers> <!--设置隔行背景--> <Trigger Property="ItemsControl.AlternationIndex" Value="0"> <Setter TargetName="border" Property="Background" Value="#50e9e9e9"/> </Trigger> <Trigger Property="ItemsControl.AlternationIndex" Value="1"> <Setter TargetName="border" Property="Background" Value="#FFe9e9e9"/> </Trigger> <!--鼠标经过--> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="border" Property="Background" Value="#D0BA7DF4"/> <Setter TargetName="horLine" Property="Fill" Value="{StaticResource ListView.GridLine.Horizontal.MouseOver.Brush}"/> <Setter Property="Foreground" Value="WhiteSmoke"/> <Setter Property="FontSize" Value="20"/> </Trigger> <!--被选中--> <Trigger Property="IsSelected" Value="true"> <Setter TargetName="border" Property="Background" Value="#A145F8" /> <Setter Property="Foreground" Value="WhiteSmoke" /> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsSelected" Value="true" /> <Condition Property="Selector.IsSelectionActive" Value="True" /> </MultiTrigger.Conditions> <Setter Property="Background" Value="Red" /> <Setter Property="Foreground" Value="WhiteSmoke" /> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsEnabled" Value="False" /> <Condition Property="IsSelected" Value="True" /> </MultiTrigger.Conditions> <MultiTrigger.Setters> <Setter TargetName="border" Property="Opacity" Value="0.4" /> </MultiTrigger.Setters> </MultiTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> </Trigger> </Style.Triggers> </Style> <ControlTemplate x:Key="DefaultListViewTemplateStyle" TargetType="{x:Type ListView}"> <Border x:Name="Border" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ScrollViewer Padding="{TemplateBinding Padding}" Style="{StaticResource DefaultGridViewScrollViewerStyle}"> <ItemsPresenter/> </ScrollViewer> </Border> <ControlTemplate.Triggers> <Trigger Property="IsGrouping" Value="true"> <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter TargetName="Border" Property="Opacity" Value="0.4" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <!--Item水平布局--> <ItemsPanelTemplate x:Key="HorizontalListViewPanel"> <VirtualizingStackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </ItemsPanelTemplate> <!--Item垂直布局--> <ItemsPanelTemplate x:Key="VerticalListViewPanel"> <VirtualizingStackPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </ItemsPanelTemplate> <!--Item折布局--> <ItemsPanelTemplate x:Key="WrapPanelViewPanel"> <WrapPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </ItemsPanelTemplate> <Style x:Key="DefaultListViewStyle" TargetType="{x:Type ListView}"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="ScrollViewer.CanContentScroll" Value="True"/> <Setter Property="SnapsToDevicePixels" Value="True"/> <!--<Setter Property="VerticalContentAlignment" Value="Center"/>--> <Setter Property="HorizontalAlignment" Value="Stretch"/> <Setter Property="SelectionMode" Value="Single" /> <!--隔行变色--> <Setter Property="AlternationCount" Value="2"/> <Setter Property="OverridesDefaultStyle" Value="True"/> <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/> <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling"/> <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> <Setter Property="SelectionMode" Value="Single"/> <Setter Property="ItemContainerStyle" Value="{StaticResource DefaultListViewItemContainerStyle}"/> <Setter Property="Template" Value="{StaticResource DefaultListViewTemplateStyle}"/> <Setter Property="ItemsPanel" Value="{StaticResource VerticalListViewPanel}"/> </Style> </ResourceDictionary>
附加属性类:
public static class ListViewHelper { static ListViewHelper() { } #region ListView附加属性 public static readonly DependencyProperty HorizontalLineWidthProperty = DependencyProperty.RegisterAttached("HorizontalLineWidth", typeof(double), typeof(ListViewHelper), new PropertyMetadata(1.0)); public static double GetHorizontalLineWidth(DependencyObject dp) { return (double)dp.GetValue(HorizontalLineWidthProperty); } public static void SetHorizontalLineWidth(DependencyObject dp, double value) { dp.SetValue(HorizontalLineWidthProperty, value); } public static readonly DependencyProperty VerticalLineWidthProperty = DependencyProperty.RegisterAttached("VerticalLineWidth", typeof(double), typeof(ListViewHelper), new PropertyMetadata(1.0)); public static double GetVerticalLineWidth(DependencyObject dp) { return (double)dp.GetValue(VerticalLineWidthProperty); } public static void SetVerticalLineWidth(DependencyObject dp, double value) { dp.SetValue(VerticalLineWidthProperty, value); } public static readonly DependencyProperty HorizontalLineBrushProperty = DependencyProperty.RegisterAttached("HorizontalLineBrush", typeof(Brush), typeof(ListViewHelper), new PropertyMetadata(Brushes.Red)); public static Brush GetHorizontalLineBrush(DependencyObject dp) { return (Brush)dp.GetValue(HorizontalLineBrushProperty); } public static void SetHorizontalLineBrush(DependencyObject dp, Brush value) { dp.SetValue(HorizontalLineBrushProperty, value); } public static readonly DependencyProperty VerticalLineBrushProperty = DependencyProperty.RegisterAttached("VerticalLineBrush", typeof(Brush), typeof(ListViewHelper), new PropertyMetadata(Brushes.Black)); public static Brush GetVerticalLineBrush(DependencyObject dp) { return (Brush)dp.GetValue(VerticalLineBrushProperty); } public static void SetVerticalLineBrush(DependencyObject dp, Brush value) { dp.SetValue(VerticalLineBrushProperty, value); } public static readonly DependencyProperty HorizontalLineVisibilityProperty = DependencyProperty.RegisterAttached("HorizontalLineVisibility", typeof(Visibility), typeof(ListViewHelper), new PropertyMetadata(Visibility.Collapsed)); public static Visibility GetHorizontalLineVisibility(DependencyObject dp) { return (Visibility)dp.GetValue(HorizontalLineVisibilityProperty); } public static void SetHorizontalLineVisibility(DependencyObject dp, Visibility value) { dp.SetValue(HorizontalLineVisibilityProperty, value); } public static readonly DependencyProperty VerticalLineVisibilityProperty = DependencyProperty.RegisterAttached("VerticalLineVisibility", typeof(Visibility), typeof(ListViewHelper), new PropertyMetadata(Visibility.Collapsed)); public static Visibility GetVerticalLineVisibility(DependencyObject dp) { return (Visibility)dp.GetValue(VerticalLineVisibilityProperty); } public static void SetVerticalLineVisibility(DependencyObject dp, Visibility value) { dp.SetValue(VerticalLineVisibilityProperty, value); } #endregion }
使用:
<ListView Margin="3" Width="600" Height="320" ItemsSource="{Binding Persons}" Style="{StaticResource DefaultListViewStyle}"> <ListView.ItemContainerStyle> <Style BasedOn="{StaticResource DefaultListViewItemContainerStyle}" TargetType="{x:Type ListViewItem}"> <!--设置水平线条宽度--> <Setter Property="control:ListViewHelper.HorizontalLineWidth" Value="2"/> <!--设置水平线条画刷--> <!--<Setter Property="control:ListViewHelper.HorizontalLineBrush" Value="Red"/>--> <Setter Property="control:ListViewHelper.HorizontalLineBrush" Value="{StaticResource ListView.GridLine.Horizontal.Brush}"/> <!--设置水平线条是否可见--> <Setter Property="control:ListViewHelper.HorizontalLineVisibility" Value="Visible"/> <!--设置垂直线条宽度--> <Setter Property="control:ListViewHelper.VerticalLineWidth" Value="1"/> <!--设置垂直线条画刷--> <Setter Property="control:ListViewHelper.VerticalLineBrush" Value="Black"/> <!--设置垂直线条是否可见--> <Setter Property="control:ListViewHelper.VerticalLineVisibility" Value="Visible"/> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView ColumnHeaderContainerStyle="{StaticResource DefaultListViewHeader}"> <GridViewColumn Header="Name" Width="160" DisplayMemberBinding="{Binding Name}"/> <GridViewColumn Header="Country" Width="130" DisplayMemberBinding="{Binding Country}"/> <GridViewColumn Header="Age" Width="120" DisplayMemberBinding="{Binding Age}"/> <GridViewColumn Header="Other" Width="120"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="Other"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
相关文章推荐
- WPF ListView显示GridLine(可选)
- WPF如何利用附加属性修改ShowGridLines效果详解
- echarts2.0修改markpoint及markline的属性(markpoint显示隐藏,并且实现自定义图例)
- WPF下通过附加属性实现单实例启动
- WPF中如何在Xaml里通过Trigger修改该其他控件的属性
- WPF下通过附加属性实现单实例启动
- WPF下通过附加属性实现单实例启动
- WPF中如何在Xaml里通过Trigger修改该其他控件的属性
- wpf listView实现Grid,并且奇偶行显示不同颜色
- WPF之通过EventTrigger修改模板中元素的属性
- 通过查询数据库中的数据匹配在页面上:(set单条数据属性是在页面上的显示与foreach的不同) 通过ID修改提取位置表信息
- Silverlight中通过WCF方式传递数据 修改服务器端类的属性Silverlight中无法显示该属性
- IronPython+WPF 修改ListView 中的CheckBox和TextBox等控件的使得数据实时更新的办法
- VC中通过动态读取数据库中数据集显示在ListView中且将将数据字段作为表头
- WPF前台数据验证(红框)Validation.ErrorTemplate 附加属性
- WPF前台数据验证(红框)Validation.ErrorTemplate 附加属性
- WPF ListView多行显示
- 转:zTree高级入门:如何通过扩展节点的属性来达到是否显示节点的删除编辑等图标(按钮)
- 通过webservice使用jquery访问数据(包含显示,验证,修改)
- PropertyGrid 中修改属性后, 即时显示出来