2015-09-17 142 views
1

内网​​格行的高度。如果我在WPF有一个ListBox具有Grid里面的DataTemplate,我怎么会引用Grid的各种ColumnDefinition正常吗?绑定到DataTemplate中

我想要做的是有一个ListBox包含3个列的网格。最后2列有可以是红色或绿色的圆圈。为了绘制圆,我使用的是Ellipse,为了使它成为一个圆,我只想将椭圆的宽度绑定到的高度,即Grid

由于只有1中的每个Grid行的ListBox,这将导致在Ellipse保持为圆不管我怎么大小ListBoxGrid

但是,我有问题,正确引用RowDefinitionGrid,它本身在DataTemplate里面。我所拥有的目前是这样的:

<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内的财产?

回答

0

我认为你要找的是Stretch =“Uniform”这应该绘制一个圆形来填充你行内的空间。