导出 (0) 打印
全部展开
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文

FrameworkElement.Width 属性

获取或设置元素的宽度。

命名空间:  System.Windows
程序集:  PresentationFramework(在 PresentationFramework.dll 中)
XAML 的 XMLNS: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[TypeConverterAttribute(typeof(LengthConverter))]
public double Width { get; set; }
<object Width="double"/>
- or –
<object Width ="qualifiedDouble"/>
- or -
<object Width ="Auto"/>

XAML 值

double

Double

Double 值的字符串表示形式大于等于 0.0。 有关上限信息,请参见“备注”。 此值被解释为与设备无关的单位(1/96 英寸)度量值。 字符串无需显式包含小数点。 例如,值 1 是可接受的。

qualifiedDouble

如上所述的一个 double 值,后跟下列单位声明字符串之一:pxincmpt

px(默认值)表示与设备无关的单位(每个单位 1/96 英寸)。

in 表示英寸;1in==96px

cm 表示厘米;1cm==(96/2.54) px

pt 表示磅;1pt==(96/72) px

Auto

启用自动调整大小行为。 请参见“备注”。

属性值

类型:System.Double
元素的宽度,单位是与设备无关的单位(每个单位 1/96 英寸)。 默认值为 Double.NaN 此值必须大于等于 0.0。 有关上限信息,请参见“备注”。

标识符字段

WidthProperty

设置为 true 的元数据属性

AffectsMeasure

这是 FrameworkElement 上的三个用于指定宽度信息的属性之一。另外两个是 MinWidthMaxWidth。如果这三个值之间存在冲突,则应用程序确定宽度的实际顺序是:首先必须采用 MinWidth;然后采用 MaxWidth;最后,如果这些值中的每个值都在限制之内,则采用 Width

此属性的返回值总是与为它设置的任何值相同。 与之相反,ActualWidth 的值可能不同。 布局可能已经由于某个原因拒绝了建议的大小。 另外,布局系统本身相对于属性系统的 Width 集以异步方式工作,因而可能尚未处理特定大小调整属性的更改。

除了可接受的 Double 值以外,此属性还可以是 Double.NaN 此值可用来指定自动调整大小行为。 在 XAML 中,可以将该值设置为字符串 "Auto"(不区分大小写)以启用自动调整大小行为。 自动调整大小行为意味着元素将填满它可以利用的宽度。 但请注意,特定控件通常通过它们的默认样式来提供默认值,以禁用自动调整大小行为,除非特地重新启用了该行为。

除了验证检查以外,Width 还有一个由布局系统实施的非确定性上限值(此值是一个非常大的数字,大于 Single.MaxValue,但小于 Double.MaxValue)。 如果超出此上限值,元素将不会呈现,并且不会引发异常。 不要将 Width 设置为一个远远大于任何可能的视觉显示的最大大小,否则有可能超出此非确定性上限。

本示例形象化地演示了 Windows Presentation Foundation (WPF) 中与宽度相关的四个属性之间的呈现行为差异。

FrameworkElement 类公开四个属性,用于描述某一元素的宽度特征。 这四个属性可能会相互冲突,如果相互冲突,则按如下顺序确定优先级:MinWidth 值优先于 MaxWidth 值,后者又优先于 Width 值。 第四个属性 ActualWidth 是只读属性,它报告与布局进程的交互所确定的实际宽度。

以下可扩展应用程序标记语言 (XAML) 示例绘制了一个 Rectangle 元素 (rect1),作为 Canvas 的子级。 可以使用一系列表示 MinWidthMaxWidthWidth 属性值的 ListBox 元素更改 Rectangle 的宽度属性。 通过这种方式,可以直观地显示每个属性的优先级。


<Canvas Height="200" MinWidth="200" Background="#b0c4de" VerticalAlignment="Top"  HorizontalAlignment="Center" Name="myCanvas">
    <Rectangle HorizontalAlignment="Center" Canvas.Top="50" Canvas.Left="50"  Name="rect1" Fill="#4682b4" Width="100" Height="100"/>
</Canvas>


...


    <TextBlock Grid.Row="1" Grid.Column="0" Margin="10,0,0,0" TextWrapping="Wrap">Set the Rectangle Width:</TextBlock>
    <ListBox Grid.Column="1" Grid.Row="1" Margin="10,0,0,0" Width="50" Height="50" SelectionChanged="changeWidth">
      <ListBoxItem>25</ListBoxItem>
      <ListBoxItem>50</ListBoxItem>
      <ListBoxItem>75</ListBoxItem>
      <ListBoxItem>100</ListBoxItem>
      <ListBoxItem>125</ListBoxItem>
      <ListBoxItem>150</ListBoxItem>
      <ListBoxItem>175</ListBoxItem>
      <ListBoxItem>200</ListBoxItem>
      <ListBoxItem>225</ListBoxItem>
      <ListBoxItem>250</ListBoxItem>
    </ListBox>

	<TextBlock Grid.Row="1" Grid.Column="2" Margin="10,0,0,0" TextWrapping="Wrap">Set the Rectangle MinWidth:</TextBlock>
    <ListBox Grid.Column="3" Grid.Row="1" Margin="10,0,0,0" Width="50" Height="50" SelectionChanged="changeMinWidth">
      <ListBoxItem>25</ListBoxItem>
      <ListBoxItem>50</ListBoxItem>
      <ListBoxItem>75</ListBoxItem>
      <ListBoxItem>100</ListBoxItem>
      <ListBoxItem>125</ListBoxItem>
      <ListBoxItem>150</ListBoxItem>
      <ListBoxItem>175</ListBoxItem>
      <ListBoxItem>200</ListBoxItem>
      <ListBoxItem>225</ListBoxItem>
      <ListBoxItem>250</ListBoxItem>
  </ListBox>      

    <TextBlock Grid.Row="1" Grid.Column="4" Margin="10,0,0,0" TextWrapping="Wrap">Set the Rectangle MaxWidth:</TextBlock>
    <ListBox Grid.Column="5" Grid.Row="1" Margin="10,0,0,0" Width="50" Height="50" SelectionChanged="changeMaxWidth">
      <ListBoxItem>25</ListBoxItem>
      <ListBoxItem>50</ListBoxItem>
      <ListBoxItem>75</ListBoxItem>
      <ListBoxItem>100</ListBoxItem>
      <ListBoxItem>125</ListBoxItem>
      <ListBoxItem>150</ListBoxItem>
      <ListBoxItem>175</ListBoxItem>
      <ListBoxItem>200</ListBoxItem>
      <ListBoxItem>225</ListBoxItem>
      <ListBoxItem>250</ListBoxItem>  
    </ListBox>


下面的代码隐藏示例处理 SelectionChanged 事件引发的事件。 每个自定义方法均从ListBox获取输入,将该值分析为Double,并将其应用于指定的宽度相关属性。 宽度值还可转换为字符串,并写入各种 TextBlock 元素(这些元素的定义未显示在所选 XAML 中)。


private void changeWidth(object sender, SelectionChangedEventArgs args)
{
    ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
    Double sz1 = Double.Parse(li.Content.ToString());
    rect1.Width = sz1;
    rect1.UpdateLayout();
    txt1.Text = "ActualWidth is set to " + rect1.ActualWidth;
    txt2.Text = "Width is set to " + rect1.Width;
    txt3.Text = "MinWidth is set to " + rect1.MinWidth;
    txt4.Text = "MaxWidth is set to " + rect1.MaxWidth;
}
private void changeMinWidth(object sender, SelectionChangedEventArgs args)
{
    ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
    Double sz1 = Double.Parse(li.Content.ToString());
    rect1.MinWidth = sz1;
    rect1.UpdateLayout();
    txt1.Text = "ActualWidth is set to " + rect1.ActualWidth;
    txt2.Text = "Width is set to " + rect1.Width;
    txt3.Text = "MinWidth is set to " + rect1.MinWidth;
    txt4.Text = "MaxWidth is set to " + rect1.MaxWidth;
}
private void changeMaxWidth(object sender, SelectionChangedEventArgs args)
{
    ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
    Double sz1 = Double.Parse(li.Content.ToString());
    rect1.MaxWidth = sz1;
    rect1.UpdateLayout();
    txt1.Text = "ActualWidth is set to " + rect1.ActualWidth;
    txt2.Text = "Width is set to " + rect1.Width;
    txt3.Text = "MinWidth is set to " + rect1.MinWidth;
    txt4.Text = "MaxWidth is set to " + rect1.MaxWidth;
}


有关完整示例,请参见 Width Properties Comparison Sample(宽度属性比较示例)。

.NET Framework

受以下版本支持:4.5、4、3.5、3.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

并不是.NET Framework 对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求.

社区附加资源

添加
显示:
© 2015 Microsoft