#478 – 子元素的Margin 在Canvas中的应用(Two Out of Four Margin Values Are Used for Elements in a Canvas)

当向Canvas 面板中添加子元素的时候,你可以指定Top,Left,Bottom和Right附加属性。来确定子元素在Canvas中的位置。 同时子元素还可以设置Margin 属性,但是只能有两个数值能起作用。例如你设置了Canvas.Top和Canvas.Left ,那么Margin 属性中起作...

2016-11-30 18:57:22

阅读数:154

评论数:0

#471 – Image 控件的FlowDirection 属性显示效果(How FlowDirection Works with the Image Element)

Image 控件置FlowDirection 属性为RightToLeft 实现水平方向上翻转。 原文地址:https://wpf.2000things.com/2012/01/12/471-how-flowdirection-works-with-the-ima...

2016-11-29 17:05:35

阅读数:204

评论数:0

#467 – 使用UniformGrid 均分行和列(Use a UniformGrid for Evenly Spaced Rows and Columns)

UniformGrid 布局面板和Grid 面板相似,将子元素按照行列的方式排列。但是可以Grid 有一下不同:  - 不需要指定行和列的大小  - 所有列都是相同的宽度  - 所有行都是相同的高度  - 要指定预期的行和列的数目  - 不需要给子元素指定所在的行和列 子元素将自动的根据添加是顺序...

2016-11-29 14:53:34

阅读数:2175

评论数:0

#466 – 将GridSplitter和SharedSizeGroup联合使用(Using a GridSplitter in Conjunction with a SharedSizeGroup)

一个GridSplitter 允许用户通过拖动分隔条改变行或者列的大小,SharedSizeGroup 属性运行多个行或者列自动拥有同样的大小。你可以将他们合并在一起,允许用户拖动改变一个列或者行的大小,而另外的行或者列自动和它保持一样的大小。 下面的例子中,用户可以拖动任何一个分隔条,同时改变左...

2016-11-29 11:39:38

阅读数:199

评论数:0

#462 – 画一个外观更漂亮的GridSplitter(Drawing a Better Looking GridSplitter)

GridSplitter 用来分隔Grid面板的行和列。默认情况下,GridSplitter 控件由一个单独的Border 元素组成。你可以设置border的边框,颜色和背景色来改变GridSplitter 的外观。 我们可以在其表面画一对水平线使GridSplitter 的外观更漂亮。 ...

2016-11-29 10:27:50

阅读数:639

评论数:0

#455 – Using ItemContainerStyle to Bind Data Elements in a Collection to a Grid

在之前的文章中,需要将ItemsControl的子元素的行列和Grid.Row 和Grid.Column 属性绑定,我们的做法是将行列绑定到包含显示项的ContentPresenter 的Grid.Row 和Grid.Column ,是通过继承ItemsControl 类然后重写PrepareCo...

2016-11-28 18:23:21

阅读数:203

评论数:0

#448 – 在Grid中显示数据绑定元素的集合(Data Binding Elements in a Collection to a Grid)

假设你有一个集合,想将集合的数据显示在Grid上,数据所显示行和列根据集合的内容动态设置。你需要在集合的单个实例中有指定行和列的属性并对其进行绑定。 你可以使用Grid 面板作为ItemsControl的ItemsPanel 。这样子元素将以Grid 的方式进行布局。然后你可以设置ItemTemp...

2016-11-28 17:01:55

阅读数:660

评论数:0

#444 – DockPanel 中的子元素不一定一直都是平铺显示(Children of DockPanel Don’t Always Have to be Stretched)

一般情况下,你将子元素停靠在DockPanel 控件中的一边,子元素会平铺当前条目的宽度或者高度显示。 但是,如果你使用子元素的HorizontalAlignment 属性(停靠在Top 或者Bottom)或者VerticalAlignment 属性(停靠在Left 或者Right),将会是子元素...

2016-11-28 11:45:26

阅读数:416

评论数:0

#436 – 给Border加上立体阴影(Using a Drop Shadow with a Border)

如果你为一个Border指定一个DropShadowEffect ,那么所有Border 里面的子元素都会获得立体阴影。 效果如图 如果你想阴影仅仅只是围绕在Border周围,而不是每个子...

2016-11-25 10:08:51

阅读数:1170

评论数:0

#431 – 绑定控件的宽度到高度(Binding a Control’s Width to Its Height)

 同一控件的不同属性可以相互绑定,因此你可以将空间的宽度绑定到高度以保证控件一直是一个正方形。 下面的例子中,Button 控件的HorizontalAlignment 属性设置为Stretch,它的宽度会随着容器大小的改变而改变。如果将其ActualWidth 属性绑定到Heigh...

2016-11-24 18:05:01

阅读数:560

评论数:0

#425–使用SharedSizeGroup在Grid间共享列的大小(SharedSizeGroup Allows Sharing Column Sizes Across Differet Grid)

 你使用ColumnDefinition 的SharedSizeGroup 属性使ListBox中所有的子项的列大小都一样。这是因为列表中的每一项中都有自己Grid实例,并且各个不同的Grid之间共享了列宽。 一个很普通的例子,我们可以在一个窗口中的两个Grid 控件之间共享列宽。 ...

2016-11-24 18:01:04

阅读数:787

评论数:0

#424 – 使ListBox 中每一项保持一致大小(Getting Data-Bound Items in a ListBox to Be a Consistent Size)

 之前演示了如何通过数据绑定向ListBox 中添加丰富的内容。 但问题是在垂直方向上各项的内容并没有对齐。我们在数据模板中使用的是StackPanel ,它会自动根据内容调整大小。 我们不希望它自动调整大小,而是所有的数据中相同的列有相同的宽度。 我们可以使用Grid.IsS...

2016-11-24 17:56:03

阅读数:290

评论数:0

#409 – 加入Grid中的子元素默认占满所在单元格(Child Elements in a Grid Size to Fit the Containing Cell)

默认情况下,Grid的子元素会自动调整大小占满其所在单元格。你通常不需要为其设置大小,它的大小会根据所在单元格变化而与单元格保持一致。 你也可以通过设置子元素的Margin 属性来设定其与单元格边距距离。 ...

2016-11-10 14:37:31

阅读数:815

评论数:0

#402 – 最后一个添加到DockPanel 中的元素默认占据所有剩余空间(Final Child of DockPanel Fills Remaining Space by Default)

默认情况下,DockPanel 中的最后一个元素将自动扩展以占满所有可用的空间,无论DockPanel.Dock 设置为何值。 下面用三个不同背景色的Label来演示: 这是因为DockPanel 的LastChildFill 属性的默认值为true。...

2016-11-10 10:25:13

阅读数:750

评论数:0

WPF将控件导出为图片

WPF将片,主要是使用RenderTargetBitmap 类。 下面是一段示例代码: RenderTargetBitmap targetBitmap = new RenderTargetBitmap((int)this.exportGrid.ActualWidth, (int)this.expo...

2016-11-09 17:19:04

阅读数:2710

评论数:0

#400 – 使用ItemsPanel 属性将WrapPanel 作为ListBox的显示面板(Using a WrapPanel as the Items Panel for a ListBox)

ListBox 的ItemsPanel 属性可以指定定义显示各子项的面板的模板。你可以通过定义自己的模板重写ListBox 常见的垂直堆叠式布局。 如果你设置了ItemsPanel 模板为WrapPanel,ListBox 将会有WrapPanel的特性。 在下面的例子中,我们将上一篇中的Li...

2016-11-09 15:09:27

阅读数:1538

评论数:0

#395 – 通过数据绑定丰富ListBox 的内容(Rich ListBox Content using Data Binding)

在上一篇讲述SnapsToDevicePixels 属性的文章中,我们使用了一个ListBox 的例子列出了很多电影。里面每一个条目都有包括缩略图在内的若干个数据项组成。 下面我们看一下如何在WPF中建立这样一个项目。首先,我们需要一个Move类来存储每个电影的信息。我们将用数据绑定绑定一个这个...

2016-11-09 14:43:59

阅读数:1635

评论数:0

#392 – 使用SnapsToDevicePixels 属性消除抗锯齿效果(Use SnapsToDevicePixels Property to Prevent Anti-Aliasing)

因为WPF使用的是设备无关像素,一些GUI控件会因为抗锯齿效果而出现显示模糊的现象。 下面图片的例子中,同样宽度为1的竖线显示并不一样。 你可以通过设置UIElement 的SnapsToDevicePixels 属性值为true 来消除因为抗锯齿效果而出现的模糊。当设置该属性为true ...

2016-11-08 15:39:57

阅读数:261

评论数:0

#391 – 抗锯齿效果会导致界面元素显示模糊(Anti-Aliasing Can Lead to Fuzzy GUI Elements)

你在WPF中设置GUI控件位置和大小使用的是设备无关像素(关于设备无关像素可以看我之前写的文章矢量图与像素无关)。它可以使界面元素在不同的分辨率下始终保持一致的比例显示。 因为你没有准确的指定具体的物理像素(根据分辨率不同而变化),控件的边缘很可能并不是正好在某个物理像素上。WPF就在渲染界面控...

2016-11-08 14:31:30

阅读数:410

评论数:0

#382 – 将RichTextBox的内容保存为XAML文件(Persisting RichTextBox Contents as XAML)

你可以通过使用TextRange 对象的Save 方法对RichTextBox 控件的内容进行保存。 在下面的例子中,我在RichTextBox 控件中输入一些带格式的内容,然后按下Save 按钮。如下图: 下面是保存按钮的代码: private void Button_Click(object...

2016-11-07 10:00:23

阅读数:287

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭