UWP:Popup MaxWidth

时间:2016-05-13 12:04:48

标签: popup win-universal-app itemscontrol windows-10-universal

我有一个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>

...谢谢

1 个答案:

答案 0 :(得分:0)

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

这就是我所做的;我添加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;
}

有人有更好的解决方案,请在此发布。

谢谢!