gpt4 book ai didi

WPF 样式 setter * 高度和宽度

转载 作者:行者123 更新时间:2023-12-04 15:58:23 29 4
gpt4 key购买 nike

我正在尝试创建一个 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>

最佳答案

网格列定义/行定义定义布局,并且在定义的区域内,您应该添加应该设置样式的控件(使用附加属性可能会变得乏味),因此尽量不要设置行定义/列定义本身的样式。

造型项目:

您可以像这样在行/列中输入控件(对不起,如果我光顾):

<Rectangle Grid.Row="0" Grid.Column="0" ></Rectangle>

然后 在行/列中的控件上定义样式。
<Rectangle Grid.Row="0" Grid.Column="0" Style="{StaticResource DarkBackground}"></Rectangle>

尺码(星级):

注意:网格将根据您的代码动态填充可用区域,如果您为网格定义了固定的高度和宽度并希望按比例分配剩余空间,则您只需要应用星号。

换句话说……关于实现“明星值(value)”:

What I'm hoping to do is provide a star value for the height and width of the column and row definitions.



为什么不直接在定义中输入这样的值?:
    <Grid>
<Grid.RowDefinitions>
<RowDefinition Name="rdRank" Height="500" />
<RowDefinition Name="rdRank1" Height="60*" />
<RowDefinition Name="rdRank2" Style="40*" />
</Grid.RowDefinitions>
</Grid>

在此示例中,名为“rdRank”的行定义将具有固定高度“500”,剩余空间将分配给“rdRank1”,该空间将占 60%,“rdRank2”占 40%。

**附加属性:**

以你的风格:
    <Style x:Key="RankStyle">
<Setter Property="Control.Height" Value="0.12" />
</Style>

您正在说明应用此样式的项目中具有名为 Height 的属性的任何控件都应取值为 0.12。可以这么说,Control.Height 最终会过滤掉。

如果您的目标是在 Row 上实现 0.12* 的高度,请使用:
    <Style x:Key="NewRankStyle" TargetType="{x:Type RowDefinition}">
<Setter Property="Height" Value="0.12*" />
</Style>

..
    <Grid>
<Grid.RowDefinitions>
<RowDefinition Name="rdRank" Style="{StaticResource FileHeadingStyle}" />
<RowDefinition Name="rdRank1" Style="{StaticResource NewRankStyle}" />

使用“TargetType”允许您定位特定于类型的属性,因此允许使用星值。

希望这可以为您澄清一些概念。

关于WPF 样式 setter * 高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/703577/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com