1

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

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

诀窍是,绑定集合中的元素可能没有Details属性,在这种情况下,RowDetails 应该是空的。有没有办法让 WPF 绑定到在运行时甚至可能不存在的属性,而不会引发异常?(需要明确的是,绑定集合中的项目要么都具有Details属性,要么都没有。我不是在谈论包含多个对象类型的集合。)

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

4

1 回答 1

1

环顾四周后,我发现了 PriorityBindings,它可以完成工作。在这里,我绑定到 RowDetailsTemplate 中的 TextBlock,如果未找到绑定的属性,则将 Fallbackvalue 设置为空字符串:

<TextBlock.Text>
    <PriorityBinding FallbackValue="">
           <Binding Path="Details" IsAsync="True"/>
    </PriorityBinding>
</TextBlock.Text>
于 2013-03-14T18:18:33.880 回答