2017-08-23 57 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

相關問題