WPF / XAML将元素的宽度绑定到屏幕大小的一小部分

时间:2010-08-29 22:56:14

标签: c# wpf data-binding xaml

我正在用C#/ WPF编写一个应用程序,并试图弄清楚如何将网格列定义的宽度数据绑定到屏幕宽度的一小部分。这可能吗?基本上我想要这样的东西:

网格= 2x2
第1行高度=屏幕高度的2/3
第2行高度=屏幕高度的1/3
第1行宽度=屏幕宽度的2/3
第2行宽度=屏幕宽度的1/3

认为这正确地将整个宽度绑定到列定义:

<ColumnDefinition Width="{Binding ElementName=Window1, Path=Width}"/>

但是我不知道该怎么做是对通过数据绑定获得的值执行操作......这是否可能?我觉得这是我应该能够编码到XAML而不必以编程方式实现的东西,但我对UI设计没什么经验:(我想要类似的东西:

<ColumnDefinition Width="{Binding ElementName=Window1, Path=Width} * 2 / 3"/>

但是这是无效的

我应该只是在屏幕调整大小时编写一个函数来重新布局UI元素吗?我觉得这是多余的......或者有一些我不知道的简单方法吗?欢迎任何投入!谢谢!

1 个答案:

答案 0 :(得分:4)

听起来你只想使用星形大小:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="2*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>

这将始终给出高度的第一行2/3和高度的第二行1/3,宽度的第一列2/3和宽度的第二列1/3。它将基于Grid的大小,但如果Grid是Window的唯一子项,那么它将与Window的大小相同。