**
**附件是DataGrid支持滾動條的文件。?具體使用如下:
1)DataGrid使用控件模板
~~~
<Setter Property="Template" Value="{DynamicResource grdStudyListDataGridControlTemplate}">
~~~
~~~
~~~
??<ControlTemplate?x:Key="grdStudyListDataGridControlTemplate"?TargetType="{x:Type?DataGrid}">
???????????????<Border?BorderBrush="{TemplateBinding?BorderBrush}"?BorderThickness="{TemplateBinding?BorderThickness}"?Background="{TemplateBinding?Background}"?Padding="{TemplateBinding?Padding}"?SnapsToDevicePixels="True"?CornerRadius="9">
???????????????????<ScrollViewer?x:Name="DG_ScrollViewer"?AutomationProperties.AutomationId="PADG_ScrollViewer"?Focusable="false">
???????????????????????<ScrollViewer.Template>
???????????????????????????<ControlTemplate?TargetType="{x:Type?ScrollViewer}">
???????????????????????????????<Grid>
???????????????????????????????????<Grid.ColumnDefinitions>
???????????????????????????????????????<ColumnDefinition?Width="Auto"/>
???????????????????????????????????????<ColumnDefinition?Width="*"/>
???????????????????????????????????????<ColumnDefinition?Width="Auto"/>
???????????????????????????????????</Grid.ColumnDefinitions>
???????????????????????????????????<Grid.RowDefinitions>
???????????????????????????????????????<RowDefinition?Height="Auto"/>
???????????????????????????????????????<RowDefinition?Height="*"/>
???????????????????????????????????????<RowDefinition?Height="Auto"/>
???????????????????????????????????</Grid.RowDefinitions>
???????????????????????????????????<!--<Button?Command="{x:Static?DataGrid.SelectAllCommand}"?Focusable="false"?
???????????????????????????????????????????????????Style="{DynamicResource?{ComponentResourceKey?ResourceId=DataGridSelectAllButtonStyle,?TypeInTargetAssembly={x:Type?DataGrid}}}"
???????????????????????????????????????????????????Width="{Binding?CellsPanelHorizontalOffset,?RelativeSource={RelativeSource?AncestorType={x:Type?DataGrid}}}"?Visibility="Collapsed"?Margin="0"/>-->
???????????????????????????????????<ScrollViewer?x:Name="scvColHeaders"?AutomationProperties.AutomationId="scvPAColHeaders"?Grid.Column="1"??Margin="0,0,0,0"?HorizontalContentAlignment="Stretch"?VerticalContentAlignment="Stretch"?
?????????????????????????????????????????????????????????HorizontalScrollBarVisibility="Hidden"?VerticalScrollBarVisibility="Disabled"?Template="{DynamicResource?ScrollViewerControlTemplate1}"?
?????????????????????????????????????????????????????????>
???????????????????????????????????????<ScrollViewer.Resources>
???????????????????????????????????????????<ControlTemplate?x:Key="ScrollViewerControlTemplate1"?TargetType="{x:Type?ScrollViewer}">
???????????????????????????????????????????????<Grid?x:Name="Grid"?AutomationProperties.AutomationId="PAGrid"?Background="{TemplateBinding?Background}">
???????????????????????????????????????????????????<Grid.ColumnDefinitions>
???????????????????????????????????????????????????????<ColumnDefinition?Width="*"/>
???????????????????????????????????????????????????????<ColumnDefinition?Width="Auto"/>
???????????????????????????????????????????????????</Grid.ColumnDefinitions>
???????????????????????????????????????????????????<Grid.RowDefinitions>
???????????????????????????????????????????????????????<RowDefinition?Height="*"/>
???????????????????????????????????????????????????????<RowDefinition?Height="Auto"/>
???????????????????????????????????????????????????</Grid.RowDefinitions>
???????????????????????????????????????????????????<Rectangle?x:Name="Corner"?AutomationProperties.AutomationId="PACorner"?Grid.Column="1"?Fill="{DynamicResource?{x:Static?SystemColors.ControlBrushKey}}"?Grid.Row="1"/>
???????????????????????????????????????????????????<ScrollContentPresenter?x:Name="PART_ScrollContentPresenter"?AutomationProperties.AutomationId="PAPART_ScrollContentPresenter"?CanContentScroll="{TemplateBinding?CanContentScroll}"?CanHorizontallyScroll="False"
???????????????????????????????????????????????????????????????????????????????????CanVerticallyScroll="False"?ContentTemplate="{TemplateBinding?ContentTemplate}"?Content="{TemplateBinding?Content}"
???????????????????????????????????????????????????????????????????????????????????Grid.Column="0"?Margin="{TemplateBinding?Padding}"?Grid.Row="0"/>
???????????????????????????????????????????????????<ScrollBar?x:Name="PART_VerticalScrollBar"?AutomationProperties.AutomationId="VerticalScrollBar"?Cursor="Arrow"?Grid.Column="1"?
??????????????????????????????????????????????????????????????????????Maximum="{TemplateBinding?ScrollableHeight}"?Minimum="0"?Grid.Row="0"?Visibility="{TemplateBinding?ComputedVerticalScrollBarVisibility}"?
??????????????????????????????????????????????????????????????????????Value="{Binding?VerticalOffset,?Mode=OneWay,?RelativeSource={RelativeSource?TemplatedParent}}"?ViewportSize="{TemplateBinding?ViewportHeight}"
??????????????????????????????????????????????????????????????ContextMenu="{x:Null}"/>
???????????????????????????????????????????????????<ScrollBar?x:Name="PART_HorizontalScrollBar"?AutomationProperties.AutomationId="HorizontalScrollBar"?Cursor="Arrow"?Grid.Column="0"?
??????????????????????????????????????????????????????????????SmallChange="20"????????
??????????????????????????????????????????????????????????????Maximum="{TemplateBinding?ScrollableWidth}"?Minimum="0"?Orientation="Horizontal"?Grid.Row="1"?
??????????????????????????????????????????????????????????????????????Visibility="{TemplateBinding?ComputedHorizontalScrollBarVisibility}"?
??????????????????????????????????????????????????????????????????????Value="{Binding?HorizontalOffset,?Mode=OneWay,?RelativeSource={RelativeSource?TemplatedParent}}"?ViewportSize="{TemplateBinding?ViewportWidth}"
??????????????????????????????????????????????????????????????ContextMenu="{x:Null}"/>
???????????????????????????????????????????????</Grid>
???????????????????????????????????????????</ControlTemplate>
???????????????????????????????????????</ScrollViewer.Resources>
???????????????????????????????????????<DataGridColumnHeadersPresenter?x:Name="PART_ColumnHeadersPresenter"?AutomationProperties.AutomationId="PAPART_ColumnHeadersPresenter"??VirtualizingStackPanel.IsVirtualizing="False"?VirtualizingStackPanel.VirtualizationMode="Standard"?
???????????????????????????????????????????????????????????????????????????????Visibility="{Binding?HeadersVisibility,?ConverterParameter={x:Static?DataGridHeadersVisibility.Column},?Converter={x:Static?DataGrid.HeadersVisibilityConverter},?RelativeSource={RelativeSource?AncestorType={x:Type?DataGrid}}}"
???????????????????????????????????????????????????????????????????????????????Height="Auto"?Width="Auto"?VerticalContentAlignment="Stretch"?HorizontalContentAlignment="Stretch"?
???????????????????????????????????????????????????????????????????????????????ItemsPanel="{DynamicResource?ItemsPanelTemplate1}"?Style="{DynamicResource?DataGridColumnHeadersPresenterStyle1}"
???????????????????????????????????????????????????????????????????????????????>
???????????????????????????????????????????<DataGridColumnHeadersPresenter.Resources>
???????????????????????????????????????????????<ItemsPanelTemplate?x:Key="ItemsPanelTemplate1">
???????????????????????????????????????????????????<DataGridCellsPanel?IsItemsHost="True"?ScrollViewer.VerticalScrollBarVisibility="Disabled"?/>
???????????????????????????????????????????????</ItemsPanelTemplate>
???????????????????????????????????????????????<Style?x:Key="DataGridColumnHeadersPresenterStyle1"?TargetType="{x:Type?DataGridColumnHeadersPresenter}">
???????????????????????????????????????????????????<Setter?Property="Template">
???????????????????????????????????????????????????????<Setter.Value>
???????????????????????????????????????????????????????????<ControlTemplate?TargetType="{x:Type?DataGridColumnHeadersPresenter}">
???????????????????????????????????????????????????????????????<Grid>
???????????????????????????????????????????????????????????????????<DataGridColumnHeader?x:Name="PART_FillerColumnHeader"?AutomationProperties.AutomationId="PAPART_FillerColumnHeader"?IsHitTestVisible="False"?Visibility="Collapsed"/>
???????????????????????????????????????????????????????????????????<ItemsPresenter/>
???????????????????????????????????????????????????????????????</Grid>
???????????????????????????????????????????????????????????</ControlTemplate>
???????????????????????????????????????????????????????</Setter.Value>
???????????????????????????????????????????????????</Setter>
???????????????????????????????????????????????</Style>
???????????????????????????????????????????</DataGridColumnHeadersPresenter.Resources>
???????????????????????????????????????</DataGridColumnHeadersPresenter>
???????????????????????????????????</ScrollViewer>
???????????????????????????????????<ScrollContentPresenter?x:Name="PART_ScrollContentPresenter"?AutomationProperties.AutomationId="PAPART_ScrollContentPresenter"?CanContentScroll="{TemplateBinding?CanContentScroll}"?Grid.ColumnSpan="2"?Grid.Row="1"?/>
???????????????????????????????????<ScrollBar?x:Name="PART_VerticalScrollBar"?AutomationProperties.AutomationId="PAPART_VerticalScrollBar"?Grid.Column="2"?Maximum="{TemplateBinding?ScrollableHeight}"?Orientation="Vertical"?Grid.Row="1"?
??????????????????????????????????????????????????????Visibility="{TemplateBinding?ComputedVerticalScrollBarVisibility}"
??????????????????????????????????????????????????????Value="{Binding?VerticalOffset,?Mode=OneWay,?RelativeSource={RelativeSource?TemplatedParent}}"?ViewportSize="{TemplateBinding?ViewportHeight}"
??????????????????????????????????????????????ContextMenu="{x:Null}"/>
???????????????????????????????????<Grid?Grid.Column="1"?Grid.Row="2">
???????????????????????????????????????<Grid.ColumnDefinitions>
???????????????????????????????????????????<!--<ColumnDefinition?Width="{Binding?NonFrozenColumnsViewportHorizontalOffset,?RelativeSource={RelativeSource?AncestorType={x:Type?DataGrid}}}"/>-->
???????????????????????????????????????????<ColumnDefinition?Width="*"/>
???????????????????????????????????????</Grid.ColumnDefinitions>
???????????????????????????????????????<ScrollBar?Grid.Column="0"
??????????????????????????????????????????????????SmallChange="20"
????????????????????????????????????????????????????AutomationProperties.AutomationId="PA"?Name="PART_HorizontalScrollBar"
????????????????????????????????????????????????????Orientation="Horizontal"
????????????????????????????????????????????????????Maximum="{TemplateBinding?ScrollableWidth}"
????????????????????????????????????????????????????ViewportSize="{TemplateBinding?ViewportWidth}"
????????????????????????????????????????????????????Value="{Binding?Path=HorizontalOffset,?RelativeSource={RelativeSource?TemplatedParent},?Mode=OneWay}"
????????????????????????????????????????????????????Visibility="{TemplateBinding?ComputedHorizontalScrollBarVisibility}"
??????????????????????????????????????????????????ContextMenu="{x:Null}"/>
???????????????????????????????????????<ScrollBar?x:Name="scbCustom"?AutomationProperties.AutomationId="scbPACustom"??Grid.Column="0"???Orientation="Horizontal"?Tag="{Binding?ElementName=scvColHeaders}"?Visibility="Visible"
??????????????????????????????????????????????????SmallChange="20"????????
??????????????????????????????????????????????????ContextMenu="{x:Null}">
???????????????????????????????????????????<ScrollBar.Maximum>
???????????????????????????????????????????????<PriorityBinding>
???????????????????????????????????????????????????<Binding?RelativeSource="{RelativeSource?AncestorType={x:Type?ScrollViewer}}"??Path="ScrollableWidth"?Converter="{StaticResource?ScrollableWidthConverter}"/>
???????????????????????????????????????????????????<Binding?ElementName="scvColHeaders"?Path="ScrollableWidth"??Mode="OneWay"?/>
???????????????????????????????????????????????</PriorityBinding>
???????????????????????????????????????????</ScrollBar.Maximum>
???????????????????????????????????????????<ScrollBar.Value>
???????????????????????????????????????????????<PriorityBinding>
???????????????????????????????????????????????????<Binding?RelativeSource="{RelativeSource?TemplatedParent}"??Path="HorizontalOffset"?Mode="OneWay"?Converter="{StaticResource?ScrollableWidthConverter}"/>
???????????????????????????????????????????????????<Binding?ElementName="scvColHeaders"?Path="HorizontalOffset"??Mode="OneWay"?/>
???????????????????????????????????????????????</PriorityBinding>
???????????????????????????????????????????</ScrollBar.Value>
???????????????????????????????????????????<ScrollBar.ViewportSize>
???????????????????????????????????????????????<PriorityBinding>
???????????????????????????????????????????????????<Binding?RelativeSource="{RelativeSource?TemplatedParent}"??Path="ViewportWidth"?Converter="{StaticResource?ScrollableWidthConverter}"?/>
???????????????????????????????????????????????????<Binding?ElementName="scvColHeaders"?Path="ViewportWidth"??Mode="OneWay"?/>
???????????????????????????????????????????????</PriorityBinding>
???????????????????????????????????????????</ScrollBar.ViewportSize>
???????????????????????????????????????</ScrollBar>
???????????????????????????????????</Grid>
???????????????????????????????</Grid>
???????????????????????????</ControlTemplate>
???????????????????????</ScrollViewer.Template>
???????????????????????<ItemsPresenter?SnapsToDevicePixels="{TemplateBinding?SnapsToDevicePixels}"/>
???????????????????</ScrollViewer>
???????????????</Border>
???????????</ControlTemplate>
2)實例化ValueConverter,?類似:
<McsfPAFEContainee_Converters:ScrollableWidthConverter?x:Key="ScrollableWidthConverter"?/>
3)使用此類,?類似:
private?DataGridScrollbarHelper?_dtgScrollbarHelper;
dtgScrollbarHelper?=?new?DataGridScrollbarHelper(this.grdStudyList);
- 前言
- win32與WPF的混合編程
- WPF: 一個可以用StoryBoard動態改變Grid行寬/列高的類
- MFC中調用WPF教程
- Expression Blend操作: 使用behavior來控制Storyboard
- WPF DatePicker 的textbox的焦點
- WPF 使用MultiBinding ,TwoWay ,ValidationRule ,需要注意的事項
- WPF TreeView 后臺C#選中指定的Item, 需要遍歷
- WPF GridViewColumn Sort DataTemplate
- DataGridColum的bug
- WPF Get Multibinding Expression, Update Source,
- WPF 后臺觸發 Validate UI‘s Element
- WPF ValidationRule 觸發ErrorTemplate 的注意事項
- WPF DelegateCommand CanExecute
- WPF TextBox PreviewTextInput handle IME (chinese)
- No overload for &#39;OnStartup&#39; matches delegate &#39;System.Windows.StartupEventHandler&#39;
- WPF error: does not contain a static &#39;Main&#39; method suitable for an entry point
- WPF GridView中的CellTemplate失效的原因
- DataGrid 顯示選中的item
- 如何得到WPF中控件綁定的EventTrigger
- 選中DataGrid的Cell而不是row
- ContextMenu的自定義
- 輸入框只能輸入英文
- TextBox的OnTextboxChanged事件里對Text重新賦值帶中文, 導致崩潰
- DataGrid當列寬超出當前寬度時,沒有數據也恒有滾動條
- wpf如何獲取control template里的元素
- Set connectionId threw an exception.
- WPF中Visible設為Collapse時,VisualTreeHelper.GetChildrenCount為0
- XAML 編碼規范 (思考)
- 如何為現有控件的DependencyProperty添加Value Changed事件?
- TreeView滾動TreeViewItem
- 為BindingList添加Sort
- WPF Background的設置有坑
- 自定義Panel中添加依賴屬性需要注意的問題
- TextBlock截斷字符顯示為....
- DataGrid 支持字符截斷顯示
- TreeView控件實踐
- WPF如何更改系統控件的默認高亮顏色 (Highlight brush)
- ViewModel中C# Property自動添加OnPropertyChanged處理的小工具, 以及相應Python知識點
- WPF中Xaml編譯正常而Designer Time時出錯的解決辦法
- 關于Snoop的用法
- wpf中為DataGrid添加checkbox支持多選全選
- WPF中DataGrid控件的過濾(Filter)性能分析及優化
- wpf控件提示Value ‘’ can not convert
- DropShadowEffect導致下拉框控件抖動
- 再論WPF中的UseLayoutRounding和SnapsToDevicePixels
- WPF案例:如何設計歷史記錄查看UI
- WPF案例:如何設計搜索框(自定義控件的原則和方法)
- WPF基本概念入門
- WPF開發中Designer和碼農之間的合作
- 聊聊WPF中的Dispatcher
- 聊聊WPF中字體的設置
- Bug:DataGridCell的顯示不完整
- WPF中ToolTip的自定義
- WPF中ItemsControl綁定到Google ProtocolBuffer的結構體時的性能問題
- TreeView的性能問題
- Xaml中string(字符串)常量的定義以及空格的處理
- 依賴屬性
- WPF中的CheckBox的_ (underscore / 下劃線)丟失
- WPF錯誤:必須使“Property”具有非 null 值。
- WPF中ItemsControl應用虛擬化時找到子元素的方法
- WPF毫秒級桌面時鐘的實現-C#中Hook(鉤子)的應用
- KB2464222導致IsNonIdempotentProperty方法找不見
- WPF中PreviewMouseDownEvent的系統處理:TabItem的PreviewMouseDown 事件彈框后不切換的問題調查
- WPF文字渲染相關的問題及解決
- wpf中的默認右鍵菜單中的復制、粘貼、剪貼等沒有本地化的解決方案
- WPF內部DeliverEvent讀鎖和PrivateAddListener寫鎖導致死鎖
- Windbg調試WPF的依賴屬性
- WPF 后臺Render線程崩潰, Exception from HRESULT: 0x88980406
- WPF中DependencyObject與DependencyProperty的源碼簡單剖析
- 禁用WPF中DataGrid默認的鼠標左鍵拖動多選行的效果
- wpf工程中在Xaml文件下添加多個cs文件
- ScrollViewer滾動到底來觸發加載數據的Behavior