wpf - 是否有与 CSS 的网格区域等效的 XAML?
问题描述
WPF XAML 是否具有与 CSS 等效的功能grid-area
?即,一种创建Row
, Column
, RowSpan
,ColumnSpan
值定义的方法,给该定义一个标识符,然后通过标识符使用这些值?
我在想像:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.AreaDefinitions>
<AreaDefinition Row="0" Column="0" ColumnSpan="2" Name="Header" />
<AreaDefinition Row="1" Column="0" Name="Navigation" />
<AreaDefinition Row="1" Column="1" Name="Main" />
<AreaDefinition Row="2" Column="0" ColumnSpan="2" Name="Footer" />
</Grid.AreaDefinitions>
<TextBlock Grid.Area="Header" Text="Header" />
<TextBlock Grid.Area="Navigation" Text="Navigation" />
<TextBlock Grid.Area="Main" Text="Main" />
<TextBlock Grid.Area="Footer" Text="Footer" />
</grid>
解决方案
没有完全类似的东西,但有一个可以类似使用的功能。样式是“将一组属性值应用于多个元素的便捷方式”。无论您有许多元素都需要将相同的属性设置为相同的值,您都可以定义 a Style
,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.Resources>
<Style x:Key="AStyle" TargetType="TextBlock">
<Setter Property="Grid.Row" Value="1"/>
<Setter Property="Grid.Column" Value="1"/>
</Style>
</Grid.Resources>
<TextBlock Style="{StaticResource AStyle}" Text="Header" />
</Grid>
在您的示例代码中,这将毫无用处,因为没有一个TextBlock
s 共享一组完整的值 - 您不会保存任何冗余代码,因为它只使用一次。但是 a grid-area
,如果它存在,出于同样的原因,它同样无用。
推荐阅读
- node.js - 如何使用 couchbase 在数据库中添加对象数组而不丢失其他数据
- android - Android - SurfaceView 中的奇怪崩溃
- reactjs - 使用情感 css 函数而不在输出类名称中暴露组件名称
- mysql - Mysql仅更新第一个唯一匹配
- django-models - 如何在我的 Django models.py 中自动制作缩略图?
- java - Firebase onDataChange 未执行
- python - Django urls.py 配置给出 404 页
- docker - 如何使在“nsenter”之后在 PID 命名空间中创建的进程可以被该命名空间杀死?
- database - postgresql 数据库关闭的问题
- javascript - 在 Node.js 中需要两次相同的模块