我正在尝试创建一个WPF应用程序,它包含一个9x9网格,行和列使用不同的样式.我希望做的是为列和行定义的高度和宽度提供星形值.这似乎不适用于当前上下文.这是否可能,如果是这样,怎么样?
<Window x:Class="BaroqueChessUI.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="500" Width="500">
<Window.Resources>
<Style x:Key="LightBackground" >
<Setter Property="Control.Background" Value="Teal" />
</Style>
<Style x:Key="DarkBackground" >
<Setter Property="Control.Background" Value="Maroon" />
</Style>
<Style x:Key="FileStyle">
<Setter Property="Control.Width" Value="0.12" />
</Style>
<Style x:Key="RankStyle">
<Setter Property="Control.Height" Value="0.12" />
</Style>
<Style x:Key="FileHeadingStyle">
<Setter Property="Control.Width" Value="0.04" />
</Style>
<Style x:Key="RankHeadingStyle">
<Setter Property="Control.Height" Value="0.04" />
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Name="rdRank" Style="{StaticResource FileHeadingStyle}" />
<RowDefinition Name="rdRank1" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank2" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank3" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank4" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank5" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank6" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank7" Style="{StaticResource FileStyle}" />
<RowDefinition Name="rdRank8" Style="{StaticResource FileStyle}" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Name="cdFile" Style="{StaticResource RankHeadingStyle}" />
<ColumnDefinition Name="cdFile2" Style="{StaticResource RankStyle}" />
<ColumnDefinition Name="cdFile3" Style="{StaticResource RankStyle}" />
<ColumnDefinition Name="cdFile4" Style="{StaticResource RankStyle}" />
<ColumnDefinition Name="cdFile5" Style="{StaticResource RankStyle}" />
<ColumnDefinition Name="cdFile6" Style="{StaticResource RankStyle}" />
<ColumnDefinition Name="cdFile7" Style="{StaticResource RankStyle}" />
<ColumnDefinition Name="cdFile8" Style="{StaticResource RankStyle}" />
</Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
hol*_*see 10
网格列定义/行定义定义布局,并且在定义的区域内,您应该添加应该设置样式的控件(使用附加的属性,因为您可能会变得乏味),因此请尝试不设置rowdefintions/columnsdefinitions样式.
造型项目:
您可以像这样在行/列中输入控件(对不起,如果我是光顾):
<Rectangle Grid.Row="0" Grid.Column="0" ></Rectangle>
Run Code Online (Sandbox Code Playgroud)
然后在行/列中的控件上定义样式.
<Rectangle Grid.Row="0" Grid.Column="0" Style="{StaticResource DarkBackground}"></Rectangle>
Run Code Online (Sandbox Code Playgroud)
尺寸(星值):
注意:网格将动态填充可用区域作为代码,如果您为网格定义固定的高度和宽度并希望按比例分配剩余空间,则只需应用星值.
换句话说......关于实现"明星价值":
我希望做的是为列和行定义的高度和宽度提供星形值.
为什么不直接在定义中输入这样的值?:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Name="rdRank" Height="500" />
<RowDefinition Name="rdRank1" Height="60*" />
<RowDefinition Name="rdRank2" Style="40*" />
</Grid.RowDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
在此示例中,名为"rdRank"的行定义将具有固定高度"500",并且剩余空间将分配给"rdRank1",其将占用60%并且"rdRank2"占用40%.
**附属物:**
在你的风格:
<Style x:Key="RankStyle">
<Setter Property="Control.Height" Value="0.12" />
</Style>
Run Code Online (Sandbox Code Playgroud)
您正在声明应用此样式的项目中的任何控件具有名为Height的属性,其值应为0.12.Control.Height最终会过滤掉.
如果您的目标是在行上使用高度0.12*,请使用:
<Style x:Key="NewRankStyle" TargetType="{x:Type RowDefinition}">
<Setter Property="Height" Value="0.12*" />
</Style>
Run Code Online (Sandbox Code Playgroud)
..
<Grid>
<Grid.RowDefinitions>
<RowDefinition Name="rdRank" Style="{StaticResource FileHeadingStyle}" />
<RowDefinition Name="rdRank1" Style="{StaticResource NewRankStyle}" />
Run Code Online (Sandbox Code Playgroud)
使用'TargetType'可以定位特定于类型的属性,因此允许使用星值.
希望这能为您解决一些概念.
| 归档时间: |
|
| 查看次数: |
17389 次 |
| 最近记录: |