案例
我在WPF窗口中定义了一系列GridLenghts作为资源:
<w:GridLength x:Key="ScrollBarRowHeight">17</w:GridLength>
由于此滚动条高度可根据所使用的操作系统而变化,因此我想重构这行代码以使用静态参数值SystemParameters.HorizontalScrollBarHeight。
问题
我已尝试过这两行:
<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'.
问题
提前致谢!
答案 0 :(得分:1)
我想知道你为什么不直接在你的XAML中使用SystemParameters.HorizontalScrollBarHeight
值,而不是试图复制它的值? (从评论中添加)
在你提供链接的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的成员用作静态属性用法或动态资源引用(以static属性值作为键)。如果希望在应用程序运行时自动更新基于系统的值,请使用动态资源引用;否则,使用静态引用。资源键的后缀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}}"