4

カスタム CellTemplate を使用して再利用可能な DataGrid 列を作成する必要があります。この CellTemplate には、DataGrid に表示する値をバインドする必要がある TextBlock コントロールが含まれている必要があります。これまでに見たすべての例では、DataGrid の Columns プロパティで使用するときに列の CellTemplate を直接指定し、TextBlock に直接 Binding を指定しました。

<data:DataGrid>
    <data:DataGrid.Columns>
        <data:DataGridTemplateColumn Header="Name">
            <data:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>
                </DataTemplate>
            </data:DataGridTemplateColumn.CellTemplate>
        </data:DataGridTemplateColumn>
    </data:DataGrid.Columns>
</data:DataGrid>

この列を単一の再利用可能なコントロールにカプセル化する必要があり、通常の DataGridTextColumn と同じように Binding を指定したいと考えています。つまり、このカスタム列を使用するときは、次のように書きたいだけです。

<data:DataGrid>
    <data:DataGrid.Columns>
        <controls:CustomColumn Header="Name" Binding="{Binding Name}" />
    </data:DataGrid.Columns>
</data:DataGrid>

問題は、カスタム列が継承している DataGridTemplateColumn に Binding プロパティがないことです。DataGridBoundColumn が使えると思ったのですが、CellTemplate を指定することができません。

望ましい動作を実現する方法は? ありがとうございました!

4

2 に答える 2

1

最も簡単なことは、customcontrol を作成して、次のように使用することだと思います。

            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <controls:CustomColumn Header="Name" Binding="{Binding Name}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

私は昨日似たようなことをしました、そしてそれはかなりうまくいきます

于 2011-09-02T16:30:48.077 に答える