2014-02-24 142 views
0

如何從其嵌套用戶控件引用列的寬度?WPF:從userControl設置列寬

我有使用Grid.ColumnDefinitions一個網格的佈局:

<Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
</Grid.ColumnDefinitions> 

列有用戶控件:

<u:box Grid.Column:0 x:Name="one" Count="{Binding Path=Count}"> 
<u:box Grid.Column:1 x:Name="two" Count="{Binding Path=Count}"> 

我有一個變量「計數」,其設定的量的用戶控件內要顯示的元素。 如果Count = 1,我想將第二個userControl的Column-Definition設置爲「0」。使它消失。如果Count = 0,則應將自動程序寬度設置爲「0」,如果Count = 2,則不應將列寬設置爲0.

回答

1

實現結果的一種可能方式是給網格一個明確的名稱,設置一個多值轉換器來處理寬度的大小。

多值轉換器將綁定到計數時使用。 第一個綁定將採用實際計數。 第二個綁定應該包含一個指定列的指標值,例如一個字符串值(「一」,「二」,「三」)。 第三個綁定應使用網格名稱綁定到實際網格。

<u:box Grid.Column:0 x:Name="one"> 
<u:box.Count> 
    <MultiBinding Converter="{StaticResource myNameConverter}" 
ConverterParameter="one"> 
    <Binding Path="Count"/> 
    <Binding ElementName="GridName"/> 
    </MultiBinding> 
</u:box.Count> 
</u:box> 

在mutlivalue轉換器中,所有這三個值都應該有足夠的信息來確定如何調整網格列的大小。

希望這會有所幫助。

+0

我是否必須將多值轉換器設置爲列定義的定義? – marcel

+0

我已更新評論,以顯示投標的示例。 –