2012-03-20 126 views
0

我有這樣定義一個GridView:WPF。綁定到GridViewColumn中單元格的高度?

  <ListView x:Name="colorLegend" Background="Transparent" ItemsSource="{Binding /Colors}"> 
      <ListView.Resources> 
       <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </Style> 
      </ListView.Resources> 
      <ListView.View> 
       <GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}"> 
        <GridViewColumn Header="Image" Width="100"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Border Background="{Binding Brush}" Height="20" Width="40" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Width="auto" /> 
       </GridView> 
      </ListView.View> 
     </ListView> 

我想第一個單元格內邊框的高度高達細胞柱的高度。 我可以將邊框的高度綁定到第二個單元格的高度嗎?

我想要的是能夠更改第二個單元格的字體大小和第一個邊框以調整大小以匹配更改?

謝謝!

+0

能否請您詳細說明一下使用快照的方式?你從第一列'邊界'不是整個列的邊界,但它應用於每個單元格,只是你知道。此外,您的第二列不會被視爲列,而只是一個垂直的單元格陣列。所以你需要詳細說明你需要什麼來實現圖形。 – 2012-03-20 07:18:34

+0

好點!我需要改變我的問題。我的意思是我嘗試設置VerticalAlignment的_CELL_ – 2012-03-20 09:46:26

回答

-1

,而不是使用的高度,我寧願在這種情況下使用VerticalAlignment=Stretch

<DataTemplate> 
    <Border Background="{Binding Brush}" VerticalAlignment="Stretch" Width="40" /> 
</DataTemplate> 

這應該做的伎倆

(你可能還需要一個了minHeight在這種情況下,只是爲了安全)

注意:在這種情況下,您希望高度只填充您擁有的空間,但無法將其綁定到此空間的情況下,VerticalAlignment屬性也可用於設置Height = *的等效值任何東西。 VerticalAlignment = Stretch或Horizo​​ntalAlignment = Stretch實際上非常有用,雖然不是很知名,但令人遺憾的是。

編輯:如果不工作,你可能想嘗試綁定到父這樣的:

<DataTemplate> 
    <Border Height="{Binding ActualHeight, RelativeSource={RelativeSource AncestorLevel=1}}" Background="{Binding Brush}" Width="40" /> 
</DataTemplate> 

(聲明:我沒有在GridViewColumn的CellTemplate試試這個,所以不要如果它不起作用,拍攝我)

編輯2:如果上面沒有任何內容,請嘗試插入模板中的網格或面板,以便它繼承高度並將其轉發到邊框。 (據我所知,網格和麪板不會表現得像邊界儘可能措施繼承而言):

<DataTemplate> 
    <Grid> 
     <Border Background="{Binding Brush}" VerticalAlignment="Stretch" Width="40" /> 
    </Grid> 
</DataTemplate> 

或:

<DataTemplate> 
    <Grid Name="grid" VerticalAlignment="Stretch"> 
     <Border Background="{Binding Brush}" Width="40" Height="{Binding ActualHeight ElementName=grid}" /> 
    </Grid> 
</DataTemplate> 
+0

的高度,但這不起作用。我看起來像高度設置爲0,因爲沒有邊框顯示。如果我使用MinHeight,則始終使用該值。 – 2012-03-20 11:20:07

+0

ARG,它在我的dataGrid CellTemplate中工作,我真的不明白爲什麼這不適用於GridView。無論如何,看看我的編輯其他選項... – David 2012-03-20 13:23:12

+0

我不會射擊你!諾言。 :)無論如何,它沒有工作。我得到一個錯誤,說我需要特殊的類型。我怎樣才能找出父母是什麼類型?我試過GridViewColumn,但沒有運氣。 – 2012-03-20 14:13:23

4

我終於得到它通過指定ancestorType到GridViewPresenter工作,喜歡這個。

<Border Background="{Binding Brush}" Width="40" Height="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GridViewRowPresenter}}, Path=ActualHeight}" /> 
+0

與其他所有解決問題的方法不同,這對我有效。如果我能夠進一步提高這一點,我會。 – 2016-01-14 15:17:11

相關問題