2015-09-17 178 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」這應該繪製一個圓形來填充你行內的空間。