我有一个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>
...谢谢
答案 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;
}
有人有更好的解决方案,请在此发布。
谢谢!