您好,
我的FrozenColumnCount = 3
始终显示HorizontalScrollBar
。现在,我需要在空白区域(滚动条的左侧)添加控件 - 请参阅图像中的RED突出显示区域。
如何在那里添加任何控件?如果可以通过XAML(ControlTemplates)实现这种功能,那将会很棒吗?我在我的应用程序中使用标准WPF v4.0 datagrid
。
注意:样本可以从这里下载 - http://blogs.msdn.com/b/vinsibal/archive/2008/10/31/wpf-datagrid-frozen-row-sample.aspx
答案 0 :(得分:2)
我从DataGrid Styles and Templates的文档开始。
注意模板中看起来像这样的部分
<Grid Grid.Column="1"
Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset,
RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ScrollBar x:Name="PART_HorizontalScrollBar"
Grid.Column="1"
Orientation="Horizontal"
ViewportSize="{TemplateBinding ViewportWidth}"
Maximum="{TemplateBinding ScrollableWidth}"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
Value="{Binding HorizontalOffset, Mode=OneWay,
RelativeSource={RelativeSource TemplatedParent}}"/>
</Grid>
此部分定义DataGrid中的底部滚动条区域。注意绑定到NonFrozenColumnsViewportHorizontalOffset - 该值确定空左区域的宽度。
您可以将整个DataGrid模板复制到项目中应用程序资源的样式中。然后,插入你自己的名为水平的StackPanel,其中Grid.Column =“0”(ScrollBar的兄弟),然后你可以添加自己的子按钮,文本等作为新StackPanel的子项。
答案 1 :(得分:1)
你有两种方法可以解决它。
一个。安装snoop,找出这个区域所属的元素,看看它是否可以在模板中访问(我希望你知道如何在Blend中创建模板的副本)。
湾处理大小/移动事件并将控件放在此区域上方,只需将控件精确定位,就像它们位于网格模板中一样......