我正在尝试设计一个WPF Datagrid,其中RowDetails (文本块)将绑定到网格的ItemSource元素的Details string属性。
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<TextBlock Text="{Binding Details}" .....
</DataTemplate>
</DataGrid.RowDetailsTemplate>诀窍是,绑定的集合中的元素可能没有Details属性,在这种情况下,RowDetails应该为空。有没有办法让WPF绑定到一个可能在运行时甚至不存在的属性,而不抛出异常?(需要明确的是,绑定的集合中的项要么都有Details属性,要么都没有。我不是在谈论包含多个对象类型的集合。)
我想一个答案是强制这个网格的用户提供总是有Details属性的对象(IDetails接口或其他),但我认为不需要这样做会很好-我希望网格在它可以显示的对象上非常灵活。
发布于 2013-03-15 02:18:34
在环顾四周之后,我发现了PriorityBindings,它可以完成这项工作。在这里,我绑定到RowDetailsTemplate中的TextBlock,如果未找到绑定的属性,则将falback值设置为空字符串:
<TextBlock.Text>
<PriorityBinding FallbackValue="">
<Binding Path="Details" IsAsync="True"/>
</PriorityBinding>
</TextBlock.Text>https://stackoverflow.com/questions/15372883
复制相似问题