我有一个这样的网格:
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="Rank Percentage" Grid.Column="0" />
<Rectangle Height="20" Grid.Column="1" Width="{x:Bind CurrentCar.RankPercentage, Mode=OneWay}"
</Grid>
我希望矩形的宽度与列的宽度成比例。网格的宽度在编译时是未知的(它取决于用户如何调整应用程序窗口的大小)。例如:如果网格宽度为450,当前汽车等级百分比= 80,则矩形宽度应为450 (2/3)(80/100)
我曾尝试使用ConverterParameter = ActualWidth of the Grid的转换器,但它不起作用。
2条答案
按热度按时间s8vozzvw1#
您可以在以下情况下使用网格的
SizeChanged
事件:但是我认为你应该看看ProgressBar控件。
6mw9ycah2#
你可以使用
valueConverter
,但是你可能需要稍微修改一下Converter
。你可以给Converter
添加一个属性,并与你的根grid
绑定,然后把元素名作为参数传递给Converter
。然后你可以在Converter
中得到Grid
的宽度值。我做了一个简单的演示,你可以试试。Xaml:
主页.cs:
this.Bindings.Update()
中可能会有警告,但实际上并不重要