0

我正在尝试学习 WPF。虽然,我在布局和选择哪一个方面遇到了麻烦。我不想使用画布,因为重点是掌握 WPF 的窍门..

我决定将我的一个简单程序(在 Windows 窗体中)转移到 WPF..

我附上了简单的 1 页表单的图片。有人可以建议我如何在 WPF 中复制它吗?

在此处输入图像描述

4

2 回答 2

3

表单布局是一个有趣的困境。它们通常涉及大量样板代码,有许多技术可以在表单布局中删除样板代码,但它们是相当先进的 WPF 概念。

对您来说最简单的解决方案将是StackPanel布置您的部分并Grid在您的GroupBox控件中放置一个。

网格可以设置为 4 列:

  1. 第 1 列标签
  2. Col 1 身体
  3. Col 2 标签
  4. Col 2 身体

使用堆栈面板资源中的全局样式,您可以定义默认视觉行为,这样项目最终不会接触:

<Style TargetType="TextBox">
  <Setter Property="Margin" "0,0,5,5" />
</Style>

TextBox上面的样式将在可视树中所有控件的右侧和底部放置一个 5px 的边距。

这是在 WPF 中制作此 ui 的最简单(阅读:直截了当)的方法。它绝不是最好的,也不是最可维护的,但它应该可以在最多 10 分钟内完成。

还有其他方法可以使用 WPF 模拟表单布局,例如这种方法或使用基本布局组件的其他组合。

例如:

<StackPanel>
  <!-- Vertical Stack Panel, Stacks Elements on top of each other -->
  <StackPanel Orientation="Horizontal">
    <!-- Horizontal Stack Panel, Stacks Elements left to right -->
    <Label Width="100">This Label is 100units Wide</Label>
    <TextBox />
  </StackPanel>
</StackPanel>

不同的方法有不同的缺点,有些是 flex 宽度,有些不是,有些可以很好地使用列,有些则不能。我建议尝试使用 的许多子类,Panel看看它们都做了什么,或者你甚至可以推出自己的.

于 2012-04-16T20:50:20.780 回答
2

使用Grid作为容器,TextBlock al 只读文本,Textbox作为可编辑文本和Button

使用这些元素并使用(例如)XAML:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Class="MainWindow"
Width="640" Height="480" Background="White">

<Grid>
    <TextBlock HorizontalAlignment="Left" Height="20" Margin="34,30,0,0" 
        TextWrapping="Wrap" Text="Connection String" VerticalAlignment="Top" 
        Width="107" Foreground="Black"/>

    <TextBox HorizontalAlignment="Left" Height="18" Margin="170,32,0,0" 
        TextWrapping="Wrap" VerticalAlignment="Top" Width="379"/>

    <Button Content="Save" HorizontalAlignment="Left" Height="26" 
        Margin="529,387,0,0" VerticalAlignment="Top" Width="69"/>        
</Grid>

您可以将所有对象放在Window中。但是,如果您愿意,可以以编程方式添加元素。这是结果: WPF 布局

这里介绍一下WPF布局。

于 2012-04-16T20:47:07.703 回答