【wpf】xaml 中的参数复用

背景 

xaml中有几种复用的方式:

有时在xaml中,我们需要复用一些参数,比如 固定的一个值。

有时是固定的一个样式。

资源,sys的引入

有时多个控件都要设置一个高度,我可以引入sys

声明 

我就使用这个吧:xmlns:sys="clr-namespace:System;assembly=mscorlib"

<Window.Resources>
   <sys:Double x:Key="m">500</sys:Double>
</Window.Resources>

使用

<Grid Height="{StaticResource m}">

类型的转换问题

用的更多的其实是margin,我们试一试:

这里 mm 用的是string 类型,但是Margin提示类型不兼容,这是为啥? 平时我们不都是直接给的字符串吗? 这里涉及到一个知识点,类型的转换:

{ } 大括号里面的内容被称之为表达式内容,和之前非表达式不同地方在于,非表达式包含简易转换器,可以帮我转化一些常见的类型,但是一旦使用表达式,那么这个简易转换器就不存在了。  

所以如果,想共享margin 的设置,可以这么写:

<Window.Resources>
    <Thickness x:Key="t" Bottom="1" Left="0" Right="0" Top="1"/>
</Window.Resources>
<Grid Height="{StaticResource m}"  Margin="{StaticResource t}">

申明一个  Thickness, 因为 Margin这个属性的类型就是 Thickness。

<Thickness x:Key="t" Bottom="1" Left="0" Right="0" Top="1"/>

然后再使用:  Margin="{StaticResource t}"

那,我们就可以举一反三了,比如我们的背景属性的类型是SolidColorBrush,那我们就能申明这样一个资源进行复用:

<SolidColorBrush x:Key="BorderBrush" Color="#CCCEDB" />

通过样式实现复用

<Window.Resources>
    <Thickness x:Key="t" Bottom="1" Left="0" Right="0" Top="1"/>
    <Style x:Key="gg" TargetType="Grid">
        <Setter Property="Margin" Value="5,50,5,5"/>
    </Style>
</Window.Resources>
<Grid Height="{StaticResource m}" Style="{StaticResource gg}" Margin="{StaticResource t}">

使用 Style ,通过样式进行设置:

<Style x:Key="gg" TargetType="Grid">
        <Setter Property="Margin" Value="5,50,5,5"/>
</Style>

那这两种的区别是什么呢?

第一种方式,比Style 的方式,优先级更高,适用范围更广。

Style的方式,写起来更简单,不过需要指定 TargetType 的类型,表示这个 Style 需要应用到哪个类型的控件。

小结:

这些都是xaml中复用的一些方法,希望你能用的到。

猜你喜欢

转载自blog.csdn.net/songhuangong123/article/details/130940531