【问题标题】:Disable ListBox selection through user-interface only仅通过用户界面禁用列表框选择
【发布时间】:2016-07-30 06:29:02
【问题描述】:

我有一个绑定到自定义类的 ListBox:

public class SelectionModel : BaseNotifyProperyChanged
{
    private bool _selected;

    public bool IsSelected
    {
         get { return _selected; }
         set
         {
             _selected = value;
             base.RaisePropertyChanged( "IsSelected" );
         }
    }
    //.... 
}

通过 xaml 中的实现:

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
</Style>

我只想禁用用户界面的选择,保持数据绑定不变,这可能吗?我知道我可以通过禁用带有样式的 ListBoxItems 来禁用选择,但这会使绑定无效。

编辑:这似乎有些混乱,所以我会澄清一下。 我不想删除选择或突出显示,我希望能够以编程方式选择项目,但不是通过用户界面。所以禁用项目或更改高亮颜色不是我的目的正在寻找。

【问题讨论】:

  • 如果添加一个将IsSelected 设置为单向绑定的触发器会怎样?
  • 仍然可以通过用户界面选择项目。
  • 不知道我理解的对不对,你想去掉选中项的高亮显示,是这样吗?

标签: c# wpf listbox selection


【解决方案1】:

你不能禁用它吗?

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=OneWay}"/>
    <Setter Property="IsEnabled" Value="False"/>
</Style>

【讨论】:

  • 我真的以为我试过了,但显然没有!这完美无瑕,谢谢!
猜你喜欢
  • 2011-03-12
  • 2018-11-08
  • 2011-10-09
  • 2011-11-19
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 2020-05-25
  • 2011-07-17
相关资源
最近更新 更多