2014-02-28 27 views
1

我定義了ListView的DataGridColumns。當DataGridColum標頭被自定義時使用MultiBinding

我有許多情況:

1- somtimes,列標題僅是一個字 'ID',在這種情況下,我使用此代碼:

<GridViewColumn Width="Auto" 
       DisplayMemberBinding="{Binding Id}" 
       Header="Id" /> 

2-有時,列標題是由許多字的,在這種情況下,我在多線顯示它們,使用具有TextWrapping一個TextBlock:

<GridViewColumn Width="85" 
       DisplayMemberBinding="{Binding ManyWordsColumnHeader}" > 
    <GridViewColumnHeader> 
     <TextBlock Text="Many words column header" 
        TextWrapping="Wrap" /> 
    </GridViewColumnHeader> 
</GridViewColumn> 

3-有時,這些線的含量爲Multibinded(許多屬性在同一時間),像這樣:

<GridViewColumn Header="Fist name & last name"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate DataType="models:PersonClass"> 
      <TextBlock> 
       <TextBlock.Text> 
        <MultiBinding StringFormat="{}{0} {1}"> 
         <Binding Path="FirstName" /> 
         <Binding Path="LastName" /> 
        </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

,我應該怎麼做,如果我有很多字的列標題名稱組成和行的內容應multibinded許多屬性?

換句話說:我想把第二個和第三個案例結合在一起!

回答

1

我還沒有真正玩過GridView,但是這種方法對我來說似乎是合乎邏輯的(只是以防萬一)。單純從點3點2結合XAML:

<GridViewColumn Width="85" > 
    <GridViewColumn.CellTemplate> 
     <DataTemplate DataType="models:PersonClass"> 
      <TextBlock> 
       <TextBlock.Text> 
        <MultiBinding StringFormat="{}{0} {1}"> 
         <Binding Path="FirstName" /> 
         <Binding Path="LastName" /> 
        </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
    <GridViewColumnHeader> 
     <TextBlock Text="Many words column header" 
        TextWrapping="Wrap" /> 
    </GridViewColumnHeader> 
</GridViewColumn> 

有你有一欄「許多字組成列頭名和行的multibinded許多特性內容」。

0

這裏有幾個選項。

  1. 更改標題的內容是一個ListView,與 的ItemSource設置爲標題行的列表。

  2. 添加一個MultiValueConverter,該值取自所有 綁定的所有值,並返回由Environment.NewLine分隔的字符串。