这是我的情况:我正在尝试在WPF应用程序中建模的多对多关系,同时编辑关系的一方.情况是我有一组属于零到多组的用户.在编辑用户时,我使用ListViewwith SelectionModeset to Many.用户所属的组在列表视图中标记为选定项.
我的问题是:并非所有用户都有权修改用户的组成员身份.但是,他们应该能够查看它们.到目前为止,并不是一个真正的问题,因为当然,保存更改时会发生权利检查.然而,我想要做的是有效地禁用ListView(至少它能够修改SelectedItems),同时仍然保持其他基本功能(滚动,尤其是,我还在单击标题时实现了排序).这样,用户不会无意中进行他们不允许的更改,然后在他们去保存更改时遇到错误.
目前,如果用户没有足够的权利,我只是完全禁用ListView.但是,正如我所提到的,它有效地禁用了所有其他功能(滚动等),因此从用户体验的角度看是次优的.列表中的项目数(目前为几百个)需要滚动才能查看所有项目.
我已经尝试拦截各种鼠标事件(暂时忽略备用输入访问),并将事件标记为当用户单击ListViewItem并将事件标记为已处理时处理,但ListView仍然修改了选择.
我只是处理SelectionChanged事件而只是恢复以前的状态,但这似乎有点矫枉过正(但是,它可能是最简单易读的解决方案).
有人对如何完成这种行为有任何想法?
您可以禁用ListViewItems但启用ListView本身.这样滚动条就可以工作,但用户很清楚他们无法与列表中的项目进行交互.您可以使用ItemContainerStyle禁用这些项目,如下所示:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsEnabled" Value="False"/>
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4683 次 |
| 最近记录: |