2

我的文本框有一个自定义错误模板。像这样的东西:

<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 回答