我在VisualStudio2013Express中用C#创建了一个项目,这是一个WPF应用程序。在Visual中使用调试器运行时,应用程序Window显示正确的大小,但是当从bin文件夹运行相同生成的可执行文件时,窗口大约高5-7 7px。值得一提的是,Window.Height是由底层代码动态控制的。
尽管如此,为什么在运行时大小会像它一样不同呢?我刚开始在Windows上进行开发。
下面是我的代码,用于调整大小:
const int WindowBaseHeight = 94;
const int ItemHeight = 68;
ObservableCollection<obj> CurrentItems = new ObservableCollection<obj>();
AppWindow.Height = WindowBaseHeight + ItemHeight * CurrentItems.Count;发布于 2014-03-09 23:40:00
好的。深呼吸,然后删除代码,重新开始。
首先,如果您正在使用WPF,那么您需要抛弃其他技术中您可能习惯的任何和所有的方法,并理解和接受WPF心理。
基本上,您不需要对布局进行任何操作,也不需要对UI元素进行手动调整,或者在过程代码中进行类似的操作,因为WPF在默认情况下是分辨率独立,它提供了几种机制来创建与可用屏幕/窗口大小完全匹配的自动可调布局和UI。
为了使窗口自动调整到其内容的大小,必须相应地设置Window.SizeToContent属性。
您需要理解的另一个非常重要的方面是,在WPF中,任何显示"items“的UI (任何显示2个或更多相同"thing”的UI,无论"thing“是什么)都应该使用ItemsControl实现。
这是如何在WPF中创建基于自动可调项的UI,其中项目的高度为68:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" SizeToContent="Height" Width="200">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Height="68" Background="LightCyan">
<TextBlock Text="{Binding}"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>后面的代码(为了示例起见):
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = Enumerable.Range(0, 4).Select(x => "Item" + x.ToString());
}
}结果:

ItemsSource属性的,以便在正确的XAML中声明性地定义UI,而不是在代码中按过程创建UI。这是WPF中用于everything的首选方法。SizeToContent属性的值设置,该属性设置为Height。List<string>,但是您可以将数据库绑定到WPF中的任何类型的.Net对象,甚至是直接转到XML。File -> New Project -> WPF Application中,并亲自查看结果。DataBinding概述和ItemsControl系列。如果你需要进一步的帮助,请告诉我。https://stackoverflow.com/questions/22288578
复制相似问题