【问题标题】:WPF-MVVM: Prevent the user select something else in the listboxWPF-MVVM:防止用户在列表框中选择其他内容
【发布时间】:2012-11-28 10:39:19
【问题描述】:

我有一个小型 WPF 应用程序(.Net 3.5 :/)。

在这个应用程序中,我有一个列表框,它允许我在应用程序的右侧选择要编辑的元素。

如果右边部分无效,我需要阻止用户改变元素的选择。

我对此进行了很多搜索: 有些人告诉要更改背景/画笔以使其看起来无法选择(但仍然可以选择)

其他人告诉我更新子元素的 IsFocusable 属性:

<ListBox itemsSoutces={Binding Test}>
    <ListBoxt.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Focusable" Value="False"/>
        </Style>
    </listBox.ItemContainerStyle>
</ListBox>

这个解决方案的问题是这个值必须来自我的 ViewModel 的值,我不知道(也不可能)将 Style Setter 的值绑定到我的 ViewModel 的属性?

有可能吗?怎么样?

【问题讨论】:

  • 我不明白你想要达到什么目的。这可能只是我累了,但如果这个评论得到了赞成 - 或者你没有得到答案 - 试着澄清这个问题,可能用一张图片左右。我不明白的是:正确的部分何时无效?用户不能在那里编辑任何内容。为什么不通过将列表框设置为禁用 (IsEnabled = false) 来阻止选择?
  • 如果不选择列表框视图中的项目,你能计算出你的右视图是否无效吗?
  • @DanielHilgarth 我现在感觉很傻,我不知道为什么我没有想到IsEnabled!如果您可以发表您的评论作为答案,我会验证它。

标签: wpf listbox


【解决方案1】:

如果右侧部分无效,我会通过将IsEnabled 设置为 false 来禁用列表框。如果您的 ViewModel 包含相应的属性,您可以绑定到该属性:

<ListBox IsEnabled="{Binding IsValid}" ...> ... </ListBox>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多