我给了一个文本框的错误模板。但模板未正确呈现。边框的宽度是上一行中文本块的宽度。它呈现如下所示
但是当我滚动鼠标或最大化窗口时,边框会出现在整个文本框周围
我的错误模板:
<ControlTemplate x:Key="TextBoxErrorStyle">
<AdornedElementPlaceholder>
<Border BorderBrush="Red" BorderThickness="1"/>
</AdornedElementPlaceholder>
</ControlTemplate>
此文本框是列表框项模板中网格的一部分。列表框是另一个Grid.IsSharedSizeScope
设置为 true 的网格的一部分。
<ListBox ItemsSource="{Binding MyCollection}"
VerticalAlignment="Top"
HorizontalContentAlignment="Stretch"
Margin="10,100,22,100"
ScrollViewer.CanContentScroll="False">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" CornerRadius="2" BorderBrush="LightGray">
<DockPanel LastChildFill="True">
<Grid DockPanel.Dock="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="sharedColumn"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" FontStyle="Italic" Text="Class" Margin="4 7 4 4"/>
<TextBlock Grid.Column="1" Grid.Row="0" FontStyle="Italic" Text="{Binding Row1 }" Margin="4 7 4 4" />
<TextBlock Grid.Column="0" Grid.Row="1" Text="Row 2" Margin="4 11 4 4"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Text="{Binding Quantity , UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True, FallbackValue='0'}"
Validation.ErrorTemplate="{StaticResource TextBoxErrorStyle}"
Margin="4 11 4 4" />
</Grid>
</DockPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
更新:
如果我删除 SharedSizeGroup 并修复列的宽度,它就可以正常工作。但我不能像那样修复列宽