在我的 WPF 样式中,我定义了一个标准的网格行高,我想将其应用于如下几个地方:
<system:Double x:Key="TableRowHeight">22</system:Double>
但是,当我想像这样应用它时它不起作用:
<RowDefinition Height="{StaticResource TableRowHeight}"/>
相反,我需要创建一个完整的样式,例如:
<Style x:Key="GridTableRow" TargetType="{x:Type RowDefinition}">
<!--<Setter Property="Height" Value="{StaticResource TableRowHeight}"/>-->
<Setter Property="Height" Value="22"/>
</Style>
从注释掉的行可以看出,尝试在样式定义中引用数字常量也不起作用,但“硬编码”值可以。
现在我查了一下,我猜是因为与 Height 属性关联的类型是 GridLength 并且它在来自另一个资源时无法自动转换双精度值......
问题是似乎没有办法从 XAML 创建 GridLength 对象。Value 属性是只读的。所以这样的事情也不起作用:
<Style x:Key="GridTableRow" TargetType="{x:Type RowDefinition}">
<Setter Property="Height">
<Setter.Value>
<GridLength Value="{StaticResource TableRowHeight}"/>
</Setter.Value>
</Setter>
</Style>
有没有办法让它工作,或者我应该忘记使用那个常量而只使用带有硬编码值的 RowDefinition 样式来代替常量?