Я пытаюсь получить всю ширину для текущей ячейки, поэтому я могу нарисовать прямоугольник с шириной определенного процента этой ячейки. Я не смог связать, чтобы установить свойство Width более одного раза, как было предложено here. Поэтому моя следующая попытка состояла в том, чтобы передать сетку с UtilPct в конвертер, вычесть 150 (для первого столбца) и вернуть мою ширину. Тем не менее, сетка не имеет ширины, она просто говорит NaN в Snoop, а фактическая ширина равна 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>
Это дубликат [Почему ActualSize не обновляет его значение в WPF?] (Http://stackoverflow.com/questions/9008525/why-actualsize-is-not-updating-its-value-on-wpf). ColumnDefinition не наследует от FrameworkElement, поэтому ActualWidth не является DependencyProperty, то есть ваша привязка никогда не будет обновляться, когда она изменится. Вы можете использовать ActualWidth вашего TextBlock, однако, в соответствии с предложением [Robert Levy's] (http://stackoverflow.com/a/9008962/211627). – JDB