是否可以在WPF中为2x2网格创建样式?

时间:2009-08-29 00:02:33

标签: wpf xaml styles

我正在尝试这样做......

<Style
    x:Key="TwoByTwoGridStyle"
    TargetType="Grid">
    <Setter
        Property="Grid.RowDefinitions">
        <Setter.Value>
            <ControlTemplate>
                <RowDefinition
                    Height="*" />
                <RowDefinition
                    Height="Auto" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter
        Property="Grid.ColumnDefinitions">
        <Setter.Value>
            <ControlTemplate>
                <ColumnDefinition
                    Width="*" />
                <ColumnDefinition
                    Width="Auto" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

ControlTemplate不对。我收到错误消息:“属性VisualTree不支持RowDefinition类型的值”。有没有办法表示行/列定义的集合?或者,是否有其他方法可以为2x2网格创建样式/模板?

感谢。

2 个答案:

答案 0 :(得分:0)

RowDefinitions属性不是ControlTemplate类型,因此为它分配ControlTemplate没有意义。您应该改为分配RowDefinitionCollection:

<Style
    x:Key="TwoByTwoGridStyle"
    TargetType="Grid">
    <Setter
        Property="Grid.RowDefinitions"
        <Setter.Value>
            <RowDefinitionCollection>
                <RowDefinition
                    Height="*" />
                <RowDefinition
                    Height="Auto" />
            </RowDefinitionCollection>
        </Setter.Value>
    </Setter>
    <Setter
        Property="Grid.ColumnDefinitions"
        <Setter.Value>
            <ColumnDefinitionCollection>
                <ColumnDefinition
                    Width="*" />
                <ColumnDefinition
                    Width="Auto" />
            </ColumnDefinitionCollection>
        </Setter.Value>
    </Setter>
</Style>

答案 1 :(得分:0)

我现在很确定答案是:“无法完成”。如果我错了,请纠正我。