WPF:主/详细信息 - 如果没有记录,则禁用详细信息TextBoxes?

时间:2014-09-02 13:46:10

标签: wpf xaml observablecollection master-detail

我有ObservableCollection个自定义对象通过DataContext绑定到ListBox

ListBox a旁边有一组绑定到当前项目字段的TextBox。 (即Text={Binding Path=/SomeField}

TextBoxes的{​​{1}}为空时,如何禁用/灰显记录详细信息DataContext

2 个答案:

答案 0 :(得分:0)

这个答案假定您正在使用mvvm并拥有一个视图模型来备份您的视图 - 我将在您的viewmodel中创建一个只读bool属性,如果您的可观察集合的计数>则返回true。 0

然后,您可以将bool绑定到必要文本框的isEnabled属性,从而根据您的可观察集合的值启用或禁用它们。

编辑 - 根据BenjaminPaul在下面的评论,必须为您的可观察集合处理更改事件,然后您应该在bool属性上调用propertyChanged以确保更新并传递回视图。

答案 1 :(得分:0)

你可以用一种风格来做:

<Style TargetType="TextBox">
    <Style.Triggers>
        <!-- When the collection itself is null -->
        <DataTrigger Binding="{Binding }" Value="{x:Null}">
            <Setter Property="IsEnabled" Value="False" />
        </DataTrigger>
        <!-- When the collection has no items -->
        <DataTrigger Binding="{Binding Count}" Value="0">
            <Setter Property="IsEnabled" Value="False" />
        </DataTrigger>
    </Style.Triggers>
</Style>