组织 WPF 元素的更好方法是什么?
What is a better way to organize WPF elements?
我有以下 XAML:
<Window x:Class="WpfTest.Window2" ...
<Grid>
<Grid.RowDefinitions>
<!-- 0: Row Zero -->
<RowDefinition Height="30" />
<!-- 1: Row 1 -->
<RowDefinition Height="30" />
<!-- 2: Row 2 -->
<RowDefinition Height="30" />
...
<!-- and so on. -->
<!-- 0: Row Zero elements -->
<Label Grid.Row="0" ... />
<TextBlock Grid.Row="0" ... />
<!-- 1: Row 1 elements -->
<Label Grid.Row="1" ... />
<TextBlock Grid.Row="1" ... />
...
在设计时,如果我必须插入一行,比如在第 0 行和第 1 行之间,那么我必须为所有 Label
和 [=13] 的 Grid.Row
附加属性重新编号=] 元素,因为现在它们都移动了加一。
有没有更简单的方法可以让我只插入一行而不必调整该行下面的剩余项目?
如评论中所述,无法直接使用 Grid
执行此操作。不幸的是,您将不得不手动重排索引。
如果这对您来说真的很重要,另一种选择是创建一个自定义面板并使用一些不可见的子元素作为行分隔符。在内部,该面板仍然可以使用 Grid
来定位其子项,并且它必须自己设置 Grid.Row
and/or Grid.Column
附加的 属性 值。
我有以下 XAML:
<Window x:Class="WpfTest.Window2" ...
<Grid>
<Grid.RowDefinitions>
<!-- 0: Row Zero -->
<RowDefinition Height="30" />
<!-- 1: Row 1 -->
<RowDefinition Height="30" />
<!-- 2: Row 2 -->
<RowDefinition Height="30" />
...
<!-- and so on. -->
<!-- 0: Row Zero elements -->
<Label Grid.Row="0" ... />
<TextBlock Grid.Row="0" ... />
<!-- 1: Row 1 elements -->
<Label Grid.Row="1" ... />
<TextBlock Grid.Row="1" ... />
...
在设计时,如果我必须插入一行,比如在第 0 行和第 1 行之间,那么我必须为所有 Label
和 [=13] 的 Grid.Row
附加属性重新编号=] 元素,因为现在它们都移动了加一。
有没有更简单的方法可以让我只插入一行而不必调整该行下面的剩余项目?
如评论中所述,无法直接使用 Grid
执行此操作。不幸的是,您将不得不手动重排索引。
如果这对您来说真的很重要,另一种选择是创建一个自定义面板并使用一些不可见的子元素作为行分隔符。在内部,该面板仍然可以使用 Grid
来定位其子项,并且它必须自己设置 Grid.Row
and/or Grid.Column
附加的 属性 值。