0

そのため、すべてのコントロールと ValidationErrorTemplate 用の巨大なスタイル テンプレート ディクショナリを取得しました。問題は、コントロールの上に場所がない場合、コントロールの下に検証エラーを表示する必要があることです。基本的に、ウィンドウの上部にあるコントロール用です。ウィンドウの下部にあるコントロールの場合、検証はコントロールの上に表示する必要があります。

すべてのスタイルが定義されているリソース ディクショナリであるため、コード ビハインドはなく、データ バインディングもできません。

1 つのアイデアは、 の位置を決定しAdornedElementPlaceholder、テンプレートをそれぞれ非表示/表示することです。しかし、XAML でそれを行うための解決策が見つかりません。

    <ControlTemplate x:Key="ValidationErrorTemplate">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid Grid.Row="1">
                <Border>
                    <AdornedElementPlaceholder />
                </Border>                
            </Grid>
            <AdornerDecorator Grid.Row="????">
                <Border >
                    <!-- some style comes here ...  -->
                </Border>
            </AdornerDecorator>
        </Grid>
    </ControlTemplate>

Grid.Row="????" コントロールの上部に応じて、0 または 1 のいずれかになります。

4

2 に答える 2

0

2 つの別々のテンプレート (反対側) を用意し、1 つは上部の項目に使用し、もう 1 つは下部の項目に使用します。これは、話しているコントロールを含むオブジェクトに適合すると見なされます。

于 2013-07-01T15:24:42.670 に答える