В моем стиле 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>
Как видно из прокомментированной строки, пытающейся ссылаться на числовую константу в определении стиля, также не работает, но имеет значение "hardcoded".
Теперь я просмотрел его, и я предполагаю, что это связано с тем, что тип, связанный с свойством Height, является GridLength, и он каким-то образом не может автоматически использовать двойное значение при отправке с другого ресурса...
Проблема заключается в том, что, похоже, не существует способа создания объекта GridLength из XAML. Свойство Value - только для чтения. Так что что-то вроде этого тоже не работает:
<Style x:Key="GridTableRow" TargetType="{x:Type RowDefinition}">
<Setter Property="Height">
<Setter.Value>
<GridLength Value="{StaticResource TableRowHeight}"/>
</Setter.Value>
</Setter>
</Style>
Есть ли способ заставить это работать, или я должен просто забыть использовать эту константу и просто использовать стиль RowDefinition с жестко заданным значением вместо константы?