仅通过用户界面禁用列表框选择
Disable ListBox selection through user-interface only
我有一个绑定到自定义 class 的列表框:
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>
我只想从用户界面禁用 selection,保持数据绑定完整,这可能吗?我知道我可以通过禁用具有样式的 ListBoxItems 来禁用 selection,但这会使绑定无效。
编辑:好像有些混乱,所以我会澄清一下。
我不想删除 selection 或突出显示,我希望能够以编程方式 select 项目,而不是通过用户界面。 所以禁用项目或更改高亮颜色不是我要找的。
你不能禁用它吗?
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=OneWay}"/>
<Setter Property="IsEnabled" Value="False"/>
</Style>
我有一个绑定到自定义 class 的列表框:
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>
我只想从用户界面禁用 selection,保持数据绑定完整,这可能吗?我知道我可以通过禁用具有样式的 ListBoxItems 来禁用 selection,但这会使绑定无效。
编辑:好像有些混乱,所以我会澄清一下。 我不想删除 selection 或突出显示,我希望能够以编程方式 select 项目,而不是通过用户界面。 所以禁用项目或更改高亮颜色不是我要找的。
你不能禁用它吗?
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=OneWay}"/>
<Setter Property="IsEnabled" Value="False"/>
</Style>