2013-03-12 170 views
1

我試圖設計一個WPF Datagrid,其中RowDetails(文本塊)將綁定到網格的ItemSource元素的Details字符串屬性。WPF Datagrid - RowDetails綁定到可選屬性?

<DataGrid.RowDetailsTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Details}" ..... 
      </DataTemplate> 
     </DataGrid.RowDetailsTemplate> 

的訣竅是,它可能綁定的集合中的元素可能沒有Details屬性,在這種情況下RowDetails應該僅僅是空的。有沒有辦法讓WPF綁定到一個可能不存在於運行時的屬性,而不會引發異常? (要清楚的是,綁定集合中的物品將全部擁有Details屬性,否則它們都不會。我不是在談論擁有多個對象類型的集合。)

我想一個答案是強制這個網格的用戶提供的對象總是具有一個Details屬性(IDetails接口或其他),但我認爲不用這樣做會很好 - 我希望網格在它可以使用的對象中非常靈活顯示。

回答

1

環顧四周後,我發現PriorityBindings可以完成工作。這裏我綁定到RowDetailsTemplate內的TextBlock,並且如果找不到綁定屬性,則將Fallbackvalue設置爲空字符串:

<TextBlock.Text> 
    <PriorityBinding FallbackValue=""> 
      <Binding Path="Details" IsAsync="True"/> 
    </PriorityBinding> 
</TextBlock.Text>