2017-08-23 55 views
0

MainWindow.xaml我试图使用两个StaticResource元素来定义网格中TextBox边框的粗细。我似乎无法在BorderThickness规范中多次使用StaticResource如何使用多个StaticResources在XAML中指定属性值

的代码片段,其工作是,

xmlns:syw="clr-namespace:System.Windows;assembly=PresentationFramework" 
<Window.Resources> 
    <syw:Thickness x:Key="thick">5.0</syw:Thickness> 
    <syw:Thickness x:Key="thin">1.0</syw:Thickness> 
</Window.Resources> 

行数后和列被限定,并且仍然内<Grid>部,

<TextBox Name="c00" Grid.Row="1" Grid.Column="1" BorderBrush="Black" BorderThickness="{StaticResource ResourceKey=thick}"/> 
<TextBox Name="c01" Grid.Row="2" Grid.Column="2" BorderBrush="Black" BorderThickness="5.0, 5.0, 1.0, 1.0"/> 

此代码是否符合并显示两个文本框,第一个在TextBox的所有四边上具有相同的边框厚度,第二个带有一个厚度ss用于左侧和顶侧,第二个厚度用于TextBox的右侧和底侧。

我想要做的就是多次使用StaticResource代替上面第二行中的数字,因为我有很多TextBoxes并希望能够通过更改一对夫妇来更改边框厚度数字,即thickthin。但是,当我尝试时,

<TextBox Name="c00" Grid.Row="1" Grid.Column="1" BorderBrush="Black" 
     BorderThickness="{StaticResource ResourceKey=thick},{StaticResource ResourceKey=thick},{StaticResource ResourceKey=thin},{StaticResource ResourceKey=thin}"/> 

编辑器指示逗号在该位置意外,并且不会编译。

我只是格式不正确吗?

+1

的问题是,你正在尝试将多个值与一个单一的绑定字符串,则需要创建设置所有边框尺寸或用户多重绑定的厚度定义 – MikeT

+0

[仅绑定WPF控件的边距属性的一部分](https:// stackoverflow。com/questions/6249518/wpf-control-margin-property-of-wpf-control) – MikeT

回答

4

声明额外的资源

<sys:Double x:Key="dThick">5.0</sys:Double> 
<sys:Double x:Key="dThin">1.0</sys:Double> 

,并使用标记语法和双重资源价值为边界两侧设置厚度:

<TextBox.BorderThickness> 
    <syw:Thickness Left="{StaticResource dThick}" Top="{StaticResource dThick}" 
        Right="{StaticResource dThin}" Bottom="{StaticResource dThin}"/> 

</TextBox.BorderThickness> 

BorderThickness="{StaticResource ResourceKey=thick}"是标记扩展和工作正常。

BorderThickness="5.0, 5.0, 1.0, 1.0"作品,因为有相关的类型转换器,转换与逗号string分隔的数字来Thickness

BorderThickness="{StaticResource ResourceKey=thick},{StaticResource ResourceKey=thick},{StaticResource ResourceKey=thin},{StaticResource ResourceKey=thin}" - 只是在XAML不支持

+0

很好的答案,值得一提的是,这也可以在 – MikeT

+0

风格中完成解决方案具有我需要的灵活性。谢谢。 – user34299

0

我想你想在这里做的是定义一个厚度与你所需要的参数,如下所示:

<Window.Resources> 
    <syw:Thickness x:Key="borderThickness">5.0, 5.0, 1.0, 1.0</syw:Thickness> 
</Window.Resources> 

您可以使用此如下:

<TextBox BorderThickness="{StaticResource borderThickness}"/> 

这应该给你的行为您正在寻找。

+0

luxun,实际上我想在许多文本框的不同边使用'thick'和'thin',这就是为什么我分别指定他们。 – user34299

+0

啊我错过了。我想@ASh的回答会给你你想要的。 – luxun

相关问题