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のスタイルとテンプレートに関するこのドキュメントから始めます。

このように見えるテンプレートの部分に注意してください

              <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テンプレート全体をプロジェクトのアプリケーションリソースのスタイルにコピーできます。次に、Grid.Column = "0"を使用して独自の名前付き水平StackPanelを挿入し(ScrollBarの兄弟)、新しいStackPanelの子として独自の子ボタンやテキストなどを追加できます。

于 2013-01-24T14:01:55.120 に答える
1

それを解決するには2つの方法があります。

a。snoopをインストールし、この領域がどの要素に属しているかを調べ、テンプレートでアクセスできるかどうかを確認します(Blendでテンプレートのコピーを作成する方法を知っているといいのですが)。

b。サイズ/移動イベントを処理し、グリッドテンプレートにあるかのようにコントロールを正確に配置するだけで、この領域の上にコントロールを配置します。

于 2013-01-24T00:19:28.023 に答える