2010-06-25 58 views
1

我有幾個控件,我希望它們都在編譯時指定相同的寬度。所以要麼他們都使用10的寬度,全部使用20的寬度等。引用在xaml中定義的值

什麼是正確的方式定義這個值一次,並使用它像一個變量從那裏出來?

「帶給你的想法」 僞代碼:

double my_width = 10; 
<Label width=my_width content="some text"/> 
<Label width=my_width content="some text"/> 
<Label width=my_width content="some text"/> 
<Label width=my_width content="some text"/> 

回答

2

這裏是一個不錯的小把戲我看到

 <UserControl.Resources> // or wherever it's handy to stick the resource 
      <GridLength x:Key="NormalWidth">50</GridLength> 
     </UserControl.Resources> 

除了解決問題外,還可以將寬度設置與您可能要應用的其他伴奏風格(不同的標籤寬度)分開。作爲額外的好處,GridLength結構支持「*」和「Auto」屬性,以便在實際上將它用於網格時。

Label Width="{StaticResource NormalWidth}" 

乾杯,
Berryl

1

簡單的方法是在WindowLoaded事件,把這個代碼:

this.DataContext = my_width; 

並更改標記來:

<Label width="{Binding}" content="some text"/> 

-

一個更好的辦法是在一個類中定義一個靜態的(最可能是你的窗口類),如:

public static Double LabelWidth = 150; 

,並用它作爲

<Label Width="{x:Static local:Window1.LabelWidth}" Content="Some Text" /> 

注意:您必須添加一個XML命名空間參考像:

xmlns:local="clr-namespace:WpfApplication1" 

在你的窗口類或無論你在這個標籤。

-

另一個簡單的事情做的是創造一種風格:

<Window.Resources> 
    <Style x:Key="LabelStyle"> 
     <Setter Property="Width" Value="100" /> 
    </Style> 
</Window.Resources> 

,並使用它像這樣:

<Label Style="{StaticResource LabelStyle}" Content="Some Text" />