如何从嵌套的用户控件中引用列的宽度?
我有一个使用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.
答案 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转换器中的所有这三个值,您应该有足够的信息来确定如何调整网格列的大小。
希望这有帮助。