0

コントロールテンプレートに苦労しています。私は現在、より基本的なコントロールから本質的に構築されているいくつかのペインを持つUIを構築しています。

建設ペインの1つが現在どのようになっているのかを次に示します。

<Grid>

    <StackPanel>

        <ContentControl  Template="{StaticResource ConstructionBorderCtrl}">
            <ContentControl Template="{StaticResource StringCtrl}" Content="Cash Event Value:"/>
        </ContentControl>

        <ContentControl  Template="{StaticResource ConstructionBorderCtrl}">
            <ContentControl  Template="{StaticResource RateCtrl}"></ContentControl>
        </ContentControl>

        <ContentControl Template="{StaticResource ConstructionBorderCtrl}">
            <ContentControl Grid.Row="0" Template="{StaticResource FromCtrl}"></ContentControl>
        </ContentControl>

        <ContentControl Template="{StaticResource ConstructionBorderCtrl}">
            <ContentControl Grid.Row="0" Template="{StaticResource StartEndDateCtrl}"></ContentControl>
        </ContentControl>

        <ContentControl Template="{StaticResource ConstructionBorderCtrl}">
            <ContentControl Grid.Row="0" Template="{StaticResource ComboStringCtrl}">Applicable Size:</ContentControl>
        </ContentControl>

    </StackPanel>

</Grid>

例として、StringCtrlのテンプレートを次に示します。

<ControlTemplate x:Key="StringCtrl" TargetType="ContentControl">

    <Grid Margin="5">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBlock Name="ctrlText" Margin="0,0,5,0" Text="{TemplateBinding Content}"></TextBlock>
        <TextBox Name="ctrlDefaultValue" Grid.Column="1" />
    </Grid>
</ControlTemplate>

テンプレートからわかるように、実際にはラベルとテキストボックスにすぎません。ここで、テキストボックスにデフォルト値を指定し、ユーザー入力の検証を実行したいとしますが、親のConstructionペインからそのコンテキストを提供し、テンプレート内の個々の要素にバインドしたいとします。どうすればいいですか?

4

1 に答える 1

1

これは確かに私が今まで見たことがないデザインです。これには、UserControlsまたは他のタイプのカスタムコントロールがControlTemplateアプローチよりもうまく機能すると思います。

しかし、間違いなくこのルートをたどりたい場合は、テンプレートの構造/名前付けに一貫性があれば、ビヘイビアが機能しているのを見ることができます-ビヘイビアにプロパティを設定すると、ビヘイビアはそのAssociatedObjectを介してコントロールにアクセスできます子の値を設定し、検証を実行できるプロパティ。

しかし、私には多くの作業のように思えます。

于 2011-05-19T02:01:31.687 に答える