1

簡単な質問です。LabeledValue「ラベル」と「値」の文字列プロパティを持つカスタム コントロールを作成するとします。私が疑問に思っているのは、そのコントロールが 2 つのルート レベルのビジュアル (たとえば 2 つの TextBlocks) をビジュアル ツリーに出力できるかどうか、または親コントロールを共有する必要があるかどうかです。

このコントロールをグリッド上に論理的に配置する場合を考えてみましょう。Grid.Row がそれぞれ '0' と '1' に設定された事前構成済みの TextBlock タイプの 2 つの視覚的な子をグリッドに持たせたいと考えています。

// For this *LOGICAL* tree (i.e. what I type in XAML)...
<Grid>
    <LabeledValue Label="FooText" Value="FooValue" Grid.Row="0" />
    <LabeledValue Label="LaaText" Value="LaaValue" Grid.Row="1" />
</Grid>

// ...I want it to generate this *VISUAL* tree (XAML for hierarchical illustration only here)...
<Grid>
    <TextBlock Text="FooText"  Grid.Row="0" Grid.Column="0" />
    <TextBlock Text="FooValue" Grid.Row="0" Grid.Column="1" />
    <TextBlock Text="LaaText"  Grid.Row="1" Grid.Column="0" />
    <TextBlock Text="LaaValue" Grid.Row="1" Grid.Column="1" />
</Grid>

// ...and NOT this *VISUAL* tree. (XAML for hierarchical illustration only here)...
<Grid>
    <LabeledValue>
        <TextBlock Text="FooText"  Grid.Row="0" Grid.Column="0" />
        <TextBlock Text="FooValue" Grid.Row="0" Grid.Column="1" />
    </LabeledValue>
    <LabeledValue>
        <TextBlock Text="LaaText"  Grid.Row="1" Grid.Column="0" />
        <TextBlock Text="LaaValue" Grid.Row="1" Grid.Column="1" />
    </LabeledValue>
</Grid>

それが理にかなっていることを願っています。

注: これは、私たちが実際に行っていることを完全に単純化しすぎていますが、これに答えて達成できる場合は、何が必要かがわかります。

4

1 に答える 1

0

直接ではありません。親パネルを見つけて、論理ツリー内の独自の位置に基づいて新しい要素を挿入する MarkupExtension (または単なる DependencyObject かもしれません) を記述する必要があります。たぶん、ビジュアル/論理ツリーから自分自身を削除することさえあります.

于 2012-09-20T20:18:17.643 に答える