绑定到datatemplate内的网格行高

时间:2015-09-17 14:50:22

标签: c# wpf listbox

如果我在WPF中SFSafariViewController内有UIViewController ListBox,我将如何引用GridDataTemplate Grid正确吗?

我要做的是让ColumnDefinition包含每个包含3列的网格。最后两列的圆圈可以是红色或绿色。为了绘制圆圈,我使用的是ListBox,为了将其变成圆形,我只想将椭圆的宽度绑定到Ellipse的高度Row。 1}}。

由于Grid中每个Grid只有一行,因此无论ListBox的大小如何,这都会导致Ellipse保持为圆圈ListBox

我遇到了麻烦,从Grid内部RowDefinition正确引用GridDataTemplate内部<ListBox Grid.Row="0" x:Name="TermServListBox" ItemsSource="{Binding TermServs}"> <ListBox.Resources> <converter:ValidPathToBgColor x:Key="ValPthToBgClr"/> </ListBox.Resources> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <Grid x:Name="MainTermServListGrid"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding TServer}"/> <Ellipse Grid.Column="1" Width="{Binding ElementName=MainTermServListGrid, Path=RowDefinitions/ActualHeight}" Fill="{Binding IsOldPathValid, Converter={StaticResource ValPthToBgClr}}"/> <Ellipse Grid.Column="2" Width="{Binding ElementName=MainTermServListGrid, Path=RowDefinitions/Height}" Fill="{Binding IsNewPathValid, Converter={StaticResource ValPthToBgClr}}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 。我目前的情况如下:

DataTemplate

这导致每个椭圆都是一个大的椭圆形(椭圆形)而不是我想要的圆形,我认为这是由于我的不正确的绑定。是否有另一种方法可以绑定到您已经在同一get-edid内的属性?

1 个答案:

答案 0 :(得分:0)

我认为你要找的是Stretch =“Uniform”这应该画一个圆圈,填满你行内的空间。