我正在尝试获取当前单元格的整个宽度,这样我就可以绘制一个宽度为该单元格某个百分比的矩形。根据建议here,我无法绑定多次设置Width属性。所以我的下一次尝试是将网格和UtilPct传递给转换器,减去150(对于第一列)并返回我的宽度。但是,网格没有宽度,它只是说Snoop中的NaN,实际宽度是0?
获取单元格实际计算宽度的最佳方法是什么,这样我可以调整矩形的宽度?如果有人有任何其他方法,我感谢任何帮助!
XAML:
<ItemsControl x:Name="icBrokerCreditList" Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Path=BrokerCreditList}" HorizontalAlignment="Stretch">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" x:Name="brokerGrid">
<Grid.RowDefinitions>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition x:Name="utilCol" Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Background="White" Foreground="Black" FontSize="12" Text="{Binding Path=BrokerName}"></TextBlock>
<Rectangle Fill="Green" Height="20" Grid.Row="0" Grid.Column="1">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource PercentageConverter}">
<Binding Path="ActualWidth" ElementName="utilCol" />
<Binding Path="UtilPct" />
</MultiBinding>
</Rectangle.Width>
</Rectangle>
</TextBlock>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 0 :(得分:1)
您可以使用ScaleTransform
作为Rectangle
的RenderTransform,并将ScaleTransform
的X属性绑定到百分比,而不是设置宽度。
注意:这会左对齐Rectangle
,因为ScaleTransform
CenterX属性默认为0.不幸的是,它使用绝对值而不是百分比,因此您无法使用宽度未知的CenterX右对齐您必须创建第三列,其宽度设置为“Auto”并将要右对齐,请将RenderTransformOrigin设置为“1,0”。 Rectangle
放在那里。
注意:如果您的百分比实际上是一个百分比(即[0-100]%,“55%”),您必须通过转换器将其除以100以获得适当的比例。 / p>