1

次のユーザー コントロールを取得したとします。

<UserControl x:Class="MyUserControl">
    <tk:DataGrid>
        <tk:DataGrid.Columns>
            <!-- some columns -->
        </tk:DataGrid.Columns>
    </tk:DataGrid>
</UserControl>

実際には、このコントロールをさまざまな列で多くの場所で使用する必要があるため、データ グリッドに必要な列を定義することはできません。これが私がやりたいことです:

<UserControl x:Class="MyPanel">
    <ui:MyUserControl>
        <Columns>
            <!-- columns that will go into the data grid -->
        </Columns>
    </ui:MyUserControl>
</UserControl>

これを達成することは可能ですか?

PS: DataGrid.Columns は読み取り専用です。他のものにバインドすることはできません。

4

2 に答える 2

2

internal にバインドできる、呼び出された のdepenency プロパティを公開できます。もちろん、プロパティにアクセスします。UserControlColumnsDataGrid<ui:MyUserControl.Columns>

于 2012-09-07T10:54:15.817 に答える
1

@HB が彼のソリューションで述べたように、独自の依存関係プロパティを公開する必要がありますが、Columnsプロパティは読み取り専用であるため、バインディングを実行するだけでは機能しません。

依存関係プロパティのOnChangeコールバックでこれを処理し、必要に応じて列を追加/削除する必要があります。また、2 つのプロパティを同期するために、依存関係プロパティのCollectionChangedイベントと、場合によってはグリッドの列にも登録する必要があります。CollectionChanged

残念ながら、これに対する XAML のみのソリューションはないと思います。

于 2012-09-07T11:29:52.137 に答える