ListBox в Popup. ListBoxItem имеет разные отступы при первом открытии
Есть Popup, в нем ListBox, у которого перегружен Template, внутри которого у элемента выставлен Margin. Также имеется триггер на IsSelected, который делает текст строки жирным.
При первом открытии Popup правый отступ меньше левого, хотя должен быть одинаковым. На втором открытии все нормально.
воспроизводимый пример
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<ToggleButton Name="Button" Content="*" />
<Popup IsOpen="{Binding IsChecked, ElementName=Button}" StaysOpen="False">
<ListBox
Background="Aqua"
ItemsSource="{Binding Items, Mode=OneTime}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Margin="50,0,50,0" Background="Chocolate">
<ContentPresenter
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Height" Value="30" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightSkyBlue" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Popup>
</StackPanel>
code-behind
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Items.Add("aaaa/aaaaaaa/aaaaaaa/aaaaaa/aaaaaa");
SelectedItem = Items.First();
}
public ObservableCollection<string> Items { get; } = new ObservableCollection<string>();
public string SelectedItem { get; set; }
}
Замечено, что эффект пропадает если:
- убрать привязку
SelectedItem - строка элемента списка короткая
Почему так?
