WPF Datagrid - RowDetails绑定到可选属性?

时间:2013-03-12 21:49:43

标签: wpf binding datagrid rowdetails

我正在尝试设计一个WPF Datagrid,其中RowDetails(一个文本块)将绑定到网格的ItemSource元素的Details字符串属性。

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

诀窍是,绑定集合中的元素可能没有Details属性,在这种情况下,RowDetails应该只是空的。有没有办法让WPF绑定到一个在运行时可能不存在的属性,而不抛出异常? (要清楚的是,绑定集合中的项目都将具有Details属性,或者它们都不会。我不是在讨论包含多个对象类型的集合。)

我想一个答案是强制此网格的用户提供始终具有Details属性的对象(IDetails接口或其他),但我认为不必这样做会很好 - 我想要网格在它可以显示的对象中非常灵活。

1 个答案:

答案 0 :(得分:1)

经过多次调查,我发现了PriorityBindings,它完成了工作。这里我绑定到RowDetailsTemplate内的TextBlock,如果找不到binded属性,则将Fallbackvalue设置为空字符串:

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