Я дал шаблон ошибки для текстового поля. Но шаблон не отображается правильно. Ширина границы соответствует ширине текстового блока в предыдущей строке. Он отображает, как показано ниже
Но когда я прокручиваю мышь или увеличиваю окно, появляется граница вокруг всего текстового поля
Шаблон моей ошибки:
<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 и исправляю ширину столбца, это работаетправильно. Но я не могу исправить ширину столбца, как это