如何确定WPF的SelectedItem一个窗口

问题描述 投票:1回答:2

我有一个窗口列表许多基础的控制,而这一切都绑定到不同的CollectionViews一个WPF应用程序。

在窗口级别是有办法获取当前焦点清单为基础的控制当前选定的项目?我知道我可以通过焦点元素找一些相当琐碎的代码做到这一点但WPF支持这个作为一个概念开箱?

像Window.CurrentSelectedDataItem东西将是巨大的。我期待到用这样的一种方式来集中管理命令基于当前选择的数据项启用禁用命令。

wpf selecteditem
2个回答
1
投票

我不认为有一个像你指定一个属性,但是作为替代,你可以注册在你的窗口类的ListBox.SelectionChanged事件ClassHandler:

EventManager.RegisterClassHandler(typeof(ListBox), ListBox.SelectionChanged,
    new SelectionChangedEventHandler(this.OnListBoxSelectionChanged));

这将调用每当选择在应用程序列表框的任何变化。您可以使用发件人的说法,以确定哪些列表框它是改变了它的选择,以及缓存当你需要它该值。


0
投票

我没有试过,但你可以尝试使用一个转换器MultiBinding去正确的项目:

<MultiBinding Converter="{StaticResource coalesce}">
    <MultiBinding.Bindings>
        <MultiBinding Converter="{StaticResource nullIfFalse}">
            <MultiBinding.Bindings>
                 <Binding ElementName="List1" Path="HasFocus" />
                 <Binding ElementName="List1" Path="SelectedItem" />

nullIfFalse返回第二个参数,如果第一个是真实的,否则返回null。 coalesce返回第一个非空元素。

© www.soinside.com 2019 - 2024. All rights reserved.