Fly*_*del 4 c# data-binding wpf xaml
我正在用 C#/WPF 编写一个应用程序,并试图弄清楚如何将网格列定义的宽度数据绑定到屏幕宽度的一小部分。这可能吗?基本上我想要这样的东西:
网格 = 2x2
第 1 行高度 = 屏幕高度的 2/3
第 2 行高度 = 屏幕高度的 1/3
第 1 行宽度 = 屏幕宽度的 2/3
第 2 行宽度 = 屏幕宽度的 1/3
我认为这正确地将全宽绑定到列定义:
<ColumnDefinition Width="{Binding ElementName=Window1, Path=Width}"/>
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做是对它通过数据绑定获得的值执行操作......这甚至可能吗?我觉得这是我应该能够编码到 XAML 中的东西,而不必以编程方式实现,但我对 UI 设计几乎没有经验:(我想要这样的东西:
<ColumnDefinition Width="{Binding ElementName=Window1, Path=Width} * 2 / 3"/>
Run Code Online (Sandbox Code Playgroud)
但这是无效的
我应该编写一个函数来在屏幕调整大小时重新布局 UI 元素吗?我觉得那是多余的……还是有一些我不知道的简单方法?欢迎任何输入!谢谢!
听起来您只想使用星级:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)
这将始终给第一行 2/3 的高度和第二行 1/3 的高度,以及第一列 2/3 的宽度和第二列 1/3 的宽度。它将基于 Grid 的大小,但如果 Grid 是 Window 的唯一子级,那么它将与 Window 的大小相同。