UWP:弹出最大宽度

UWP: Popup MaxWidth

我有一个 Popup,其中包含一个水平排列的 ItemsControl(如果需要我可以使用 ListBox)。

由于项目的总宽度可以超过屏幕的宽度,我需要限制弹出宽度的大小。

我的问题是如何限制弹出窗口的大小?我试过使用 MaxWidth,但它不起作用:(

<Popup x:Name="puSoldItems" IsOpen="False" IsLightDismissEnabled="True" MaxWidth="{Binding ActualWidth, ElementName=_This}" ScrollViewer.HorizontalScrollMode="Auto" ScrollViewer.VerticalScrollMode="Auto">
    <Grid Background="#f8202020" MaxWidth="{Binding ActualWidth, ElementName=puSoldItems}">
        ...
        ...
        ...
        <ItemsControl x:Name="icItems" Grid.Row="1" Background="Transparent" Margin="10" MaxWidth="{Binding ActualWidth, ElementName=puSoldItems}" ScrollViewer.HorizontalScrollMode="Auto" ScrollViewer.VerticalScrollMode="Auto">
            ...
            ...
            ...
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Padding="0" Margin="0 0 0 10" BorderBrush="#afafaf" BorderThickness="0 0 0 1" MinWidth="350">
                        ...
                        ...
                        ...
                        <local:UPSoldItemList ItemsSource="{Binding Items}"></local:UPMenuModifier>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</Popup>

谢谢...

我通过强制宽度部分解决了这个问题。

这是我所做的;我添加了 ScrollViewer 并将 ItemsControl 放入其中。然后当打开弹出窗口时,我设置 ScrollViewer

的大小
private void btnItem_Tapped(object sender, TappedRoutedEventArgs e)
{
    svItems.MaxWidth = this.ActualWidth - 100;    //for padding (50 left & 50 right)
    svItems.MaxHeight = this.ActualHeight - 80;   //for padding (40 top & 40 bottom)
    puSoldItems.IsOpen = true;
}

有没有人有更好的解决办法,请post在这里

谢谢!