1

場合

WPF ウィンドウで一連の GridLenghts をリソースとして定義しました。

<w:GridLength x:Key="ScrollBarRowHeight">17</w:GridLength>

このスクロールバーの高さは、使用するオペレーティング システムによって異なるため、このコード行をリファクタリングして、静的パラメーター値SystemParameters.Horizo​​ntalScrollBarHeightを使用したいと思います。

問題

私はこれらの両方の行を試しました:

<w:GridLength x:Key="ScrollBarRowHeight"><DynamicResource Key="{x:Static System.Windows.SystemParameters.CaptionHeightKey}" /></w:GridLength>
<w:GridLength x:Key="ScrollBarRowHeight"><x:Static x:Key="System.Windows.SystemParameters.HorizontalScrollBarHeight" /></w:GridLength>

両方で同じコンパイル時エラーが発生します。

Cannot add content to object of type 'System.Windows.GridLength'.

質問

  • これを XAML で宣言的に行うことは可能ですか?
  • はいの場合、どのように?
  • いいえの場合、分離コードを含まない適切なソリューションはありますか?

前もって感謝します!

4

1 に答える 1

1

SystemParameters.HorizontalScrollBarHeight値を複製しようとするのではなく、値を XAML で直接使用しないのはなぜですか? (コメントから追加)

リンクを提供したSystemParameters.HorizontalScrollBarHeightページには、XAMLコードの両方でさまざまなプロパティを使用する方法を正確に示すコード例があります。SystemParameters

<Button FontSize="8" Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="5"      
     HorizontalAlignment="Left" 
     Height="{x:Static SystemParameters.CaptionHeight}"
     Width="{x:Static SystemParameters.IconGridWidth}">
     SystemParameters
</Button>

...

Button btncsharp = new Button();
btncsharp.Content = "SystemParameters";
btncsharp.FontSize = 8;
btncsharp.Background = SystemColors.ControlDarkDarkBrush;
btncsharp.Height = SystemParameters.CaptionHeight;
btncsharp.Width = SystemParameters.IconGridWidth;
cv2.Children.Add(btncsharp);

リンクされたページから:

XAML では、SystemParameters のメンバーを静的プロパティの使用法として、または動的リソース参照として (静的プロパティ値をキーとして) 使用できます。アプリケーションの実行中にシステム ベースの値を自動的に更新する場合は、動的リソース参照を使用します。それ以外の場合は、静的参照を使用してください。リソース キーには、プロパティ名に接尾辞 Key が追加されています。

したがって、アプリケーションの実行中に値を更新する場合は、これらのプロパティを次のように使用できる必要Bindingがあります。

<Button FontSize="8" Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="5"      
     HorizontalAlignment="Left" 
     Height="{Binding Source={x:Static SystemParameters.CaptionHeight}}"
     Width="{Binding Source={x:Static SystemParameters.IconGridWidth}}">
     SystemParameters
</Button>

次のように使用することもできますDynamicResource

Property="{DynamicResource {x:Static SystemParameters.CaptionHeight}}"
于 2014-01-29T15:31:08.603 に答える