0

TextBox検証しようとしている要素のマークアップは次のとおりです。

<StackPanel Margin="7">
    <Label x:Name="lblPrompt" Margin="7,12,7,5" Target="{Binding ElementName=txtInput}" />

    <TextBox x:Name="txtInput" Margin="7,0,7,7" Validation.ErrorTemplate="{StaticResource ErrTemplate}" />

    <UniformGrid Rows="1" Columns="2" HorizontalAlignment="Right" Width="Auto" Margin="7,7,7,3">
        <Button x:Name="btnOK" Content="_OK" Padding="2" Margin="0,0,7,0"  Background="BlanchedAlmond" Click="btnOK_Click" />
        <Button x:Name="btnCancel" Content="_Cancel" Padding="2" Margin="7,0,7,0" IsCancel="True" Background="BlanchedAlmond" Click="btnCancel_Click" />
    </UniformGrid>
</StackPanel>

そしてTextBox's error template、次のように定義されています。

<ControlTemplate x:Key="ErrTemplate">
    <StackPanel Orientation="Horizontal">
        <AdornedElementPlaceholder x:Name="adorner" />
        <TextBlock Text="{Binding ElementName=adorner,
                                  Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" Background="Red" Foreground="White" Margin="3,0,0,0" TextWrapping="Wrap" MinWidth="100" />
        </StackPanel>
    </ControlTemplate>

TextBoxこれで、コントロールで検証が失敗した場合TextBlock、エラー テンプレートで定義された要素が部分的にしか表示されなくなりました。この画像を見てください:

アプリケーションのスクリーンショット

どうすれば修正できるか教えていただけますか?

4

1 に答える 1

0

StackPanel はその境界を制限しないため、エラー テンプレートのグリッドにラップする (制限する) と、問題が解決するはずです。

于 2013-06-03T04:36:23.553 に答える