WPF:从userControl设置列宽

时间:2014-02-24 11:36:47

标签: c# wpf

如何从嵌套的用户控件中引用列的宽度?

我有一个使用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}">

我在userControl中有一个变量“Count”,用于设置要显示的元素数量。 如果Count = 1,我想将第二个userControl的Column-Definition设置为“0”。让它消失。如果Count = 0,则bot宽度应设置为“0”,如果Count = 2,则不应将列宽设置为0.

1 个答案:

答案 0 :(得分:1)

实现结果的一种可能方法是为网格指定一个明确的名称,并设置一个多值转换器来处理宽度的大小调整。

绑定到Count时将使用多值转换器。 第一个绑定将采用实际计数。 第二个绑定应该采用定义列的指示符值,例如字符串值(“一”,“两”,“三”)。 第三个绑定应使用网格名称绑定到实际网格。

<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转换器中的所有这三个值,您应该有足够的信息来确定如何调整网格列的大小。

希望这有帮助。