6

行と列が異なるスタイルを使用する 9x9 グリッドで構成される WPF アプリケーションを作成しようとしています。私が望んでいるのは、列と行の定義の高さと幅に星の値を提供することです。これは、現在のコンテキストでは機能しないようです。これは可能ですか?

<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>

4

2 に答える 2

11

グリッドの列定義/行定義はレイアウトを定義し、定義された領域内にスタイルを設定する必要があるコントロールを追加する必要があるため (退屈になる可能性があるため、付属のプロパティを使用して)、行定義/列定義自体をスタイル設定しないようにしてください。

スタイリングアイテム:

次のように行/列にコントロールを入力できます(私が愛用している場合は申し訳ありません):

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

次に、行/列内のコントロールにスタイルを定義します。

<Rectangle Grid.Row="0" Grid.Column="0" Style="{StaticResource DarkBackground}"></Rectangle>

サイズ (スター値):

注: グリッドは、コードがそのままの状態で使用可能な領域を動的に埋めます。グリッドに固定の高さと幅を定義し、残りのスペースを比例的に割り当てたい場合にのみ、星の値を適用する必要があります。

言い換えれば...「星の値」を達成することに関して:

私が望んでいるのは、列と行の定義の高さと幅に星の値を提供することです。

定義にそのように値を入力してみませんか?:

    <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 は、いわばフィルタ ダウンになります。

行で 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」を使用すると、Type 固有のプロパティをターゲットにすることができ、結果として Star Values を使用できるようになります。

これでいくつかの概念が明確になることを願っています。

于 2009-04-01T03:07:58.727 に答える
0

行または列の星のサイズ変更は、グリッドに幅と高さを指定した場合にのみ機能します。グリッドがコンテンツに基づいて自動サイズ変更されている場合、星のサイズ変更は機能しません。

于 2009-08-21T22:52:06.690 に答える