1

在此处输入图像描述

你好,

我有一个FrozenColumnCount = 3总是HorizontalScrollBar可见的。现在,我需要在空白区域(滚动条左侧)添加控件——请参见图像中红色突出显示的区域。

我怎样才能在那里添加任何控件?如果可以通过 XAML (ControlTemplates) 实现这种类型的东西会很棒吗?我WPF v4.0 datagrid在我的应用程序中使用标准。

注意:样本可以从这里下载 - http://blogs.msdn.com/b/vinsibal/archive/2008/10/31/wpf-datagrid-frozen-row-sample.aspx

4

2 回答 2

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 中的底部滚动条区域。注意与 NonFrozenColumnsViewportHorizo​​ntalOffset 的绑定——该值决定了左侧空白区域的宽度。

您可以将整个 DataGrid 模板复制到项目中的应用程序资源中的样式中。然后,插入您自己命名的水平 StackPanel,其中 Grid.Column="0"(ScrollBar 的兄弟),然后您可以添加自己的子按钮、文本等作为新 StackPanel 的子项。

于 2013-01-24T14:01:55.120 回答
1

你有两种方法来解决它。

一个。安装 snoop,找出这个区域属于什么元素,看看它是否可以在模板中访问(我希望你知道如何在 Blend 中创建模板副本)。

湾。处理大小/移动事件并在此区域上方放置一个控件,只需将控件精确定位,就好像它们在网格模板中一样......

于 2013-01-24T00:19:28.023 回答