2

TextBox のカスタム エラー テンプレートがあります。このようなもの:

<Style TargetType="{x:Type TextBox}" x:Key="ErrorTemplateStyle">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <StackPanel Orientation="Vertical">
                    <Border BorderBrush="Orange" BorderThickness="1">
                        <AdornedElementPlaceholder />
                    </Border>
                    <TextBlock Text="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem}" />
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

私の TextBox は、DataGrid のセル内に配置されます。エラーが発生したときに、そのセルのサイズを変更して、TextBox の新しいテンプレートに対応させたいと考えています。この動作を実現する方法はありますか?

4

1 に答える 1

2

オプション 1: セルの目的の幅を保持する新規または既存のクラスにプロパティを作成します。(クラスとプロパティが INotifyPropertyChanged を実装していることを確認してください。) セルの幅をそのプロパティにバインドします。エラーが発生したときにプロパティ値を変更すると、セルのサイズが調整されます。

オプション 2: グリッド以外のもの (DockPanel、StackPanel など) を使用します。これらを適切に配置すると、コンテンツに合わせてコンテナーのサイズが自動的に調整されます。

オプション 3: グリッドのサイズ変更プロパティを使用する方法を見つけます。通常、Width="Auto" を設定すると、列のサイズをそのコンテンツに合わせることができますが、それはグリッド内の他の列に依存する場合があります。

于 2009-07-21T15:30:35.163 に答える