我正在使用WPF GUI,并且我希望窗口自动调整大小以适应内容,而不是所有内容:我具有一些各种按钮和其他控件,并且我希望自动调整宽度。如果我在列表框中添加一个长项,则我希望窗口大小保持不变。
示例代码:
<Window x:Class="QuickieWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" SizeToContent="WidthAndHeight" ResizeMode="CanMinimize">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Width="100" Content="Foo" Click="Button_Click"/>
<Button Width="100" Content="Bar" Click="Button_Click"/>
<Button Width="100" Content="Baz" Click="Button_Click"/>
</StackPanel>
<ListBox Grid.Row="1" Name="TheList" Height="100"/>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string str = "This is a really long text item that will be wider than the " +
"three buttons. I want a horizontal scrollbar on the listbox, not a wider " +
"window. I want the window to size to the buttons, not to this listbox.";
this.TheList.Items.Add(str);
}
}
最初,将窗口的大小调整为按钮:
在将长项添加到列表框中后,我目前得到以下信息:
但是我宁愿得到这个:
(我通过在列表框中设置MaxWidth来完成了最后一个屏幕截图,但这并不是完整应用程序的一个好解决方案:在完整应用程序中,它不仅仅是三个按钮;它是按钮,图标,文本框,标签等,并且我希望窗口自动调整大小以适应整个混乱,而不是底部的列表框。)
您可以将不需要自动调整大小的内容的宽度绑定到您要执行的内容的实际宽度,例如:
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" x:Name="panel">
<Button Width="100"
Content="Foo"
Click="Button_Click" />
<Button Width="100"
Content="Bar"
Click="Button_Click" />
<Button Width="100"
Content="Baz"
Click="Button_Click" />
</StackPanel>
<ListBox Grid.Row="1"
Name="TheList"
Height="100" Width="{Binding ElementName=panel, Path=ActualWidth}" />
</Grid>
在这里,我使用按钮将ListBox的宽度绑定到面板的实际宽度,在这种情况下,可以实现所需的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句