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; }
}

Замечено, что эффект пропадает если:

  1. убрать привязку SelectedItem
  2. строка элемента списка короткая

Почему так?


Ответы (0 шт):