私の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 であり、別のリソースから来るときに double 値を自動的にキャストできないためだと思います...
問題は、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 スタイルを使用する必要がありますか?