WPF Tips: Listbox SelectionChanged触发前的选项

想在Listbox的SelectionChanged事件触发时对之前的选项进行处理。但是listbox没有previewSelectionChanged事件。

解决办法:

1. Validation

因为要处理的项在TextBox中,所以可以给TextBox添加一个Validation。但是由于TextBox是与Property Binding,而Validation是在binding赋值之前进行操作(调试过程中是这样的流程),所以无法获取textbox中的值。如果没有binding应该是可以。

参考:https://social.msdn.microsoft.com/Forums/vstudio/en-US/e96c725e-a86d-427e-944b-fcc4273ac260/any-way-to-preview-the-listviewselectionchanged-event?forum=wpf

2. 获取SelectionChangedEventArgs中的RemovedItem。最后采用的这个方法。

private void ListBox_SelectionChanged(object sender , SelectionChangedEventArgs e)
{
    // Here are your old selected items from the selection changed.
    // If your list box does not allow multiple selection, then just use the index 0
    // but making sure that the e.RemovedItems.Count is > 0 if you are planning to address by index.
    IList oldItems = e.RemovedItems;

    // Do something here.

    // Here are you newly selected items.
    IList newItems = e.AddedItems;
}

参考:http://stackoverflow.com/questions/1548237/how-to-get-something-like-previewselectionchanged-event-in-listbox
时间: 2024-09-30 06:41:22

WPF Tips: Listbox SelectionChanged触发前的选项的相关文章

如何让 WPF 中 ListBox 列表项前自动加上序号

有时候我们可以希望在 ListBox 列表项前面加上序号,这样看起来更清楚,还可以配合使用快捷键等. 希望达到如下图的效果: 显然我们可以通过修改 ListBox 的模板来实现,只要在 Item 中加上数字这一项即可,利用 MultiBinding 和 IMultiValueConverter 即可实现. 示例 首先,我们创建一个 Person 类: public class Person { public string Name { get; set; } } 然后创建一个 Converter

WPF ItemsControl ListBox ListView比较

在进行列表信息展示时,WPF中提供多种列表可供选择.这篇博客将对WPF ItemsControl, ListBox, ListView进行比较. 相同点: 1. 这三个控件都是列表型控件,可以进行列表绑定(ItemsSource): 2. 这三个控件均使用ItemsPresenter来展示列表信息: 不同点: 控件层次关系: ItemsControl: System.Object  System.Windows.Threading.DispatcherObject System.Windows.

利用Powershell快速对WPF的ListBox 数据源的绑定

有时候,我们在封闭的环境中做开发工作,并没有那么多便捷的开发工具,只能利用当前系统自带的基本工具做开发, 比如利用强大的framework,而powershell就是很好的开发工具,在不安装visual studio的情况下,就能实现大部分功能. 下面就用一个简单的例子来实现WPF中ListBox 数据源的绑定 1.关于dataset,我就不做多解释了,简单来说,就是一个或多个DataTable 对象的集合. 用powershell来实现的话,是简单不过的事情了. #Create Table o

WPF中Listbox/ListView 横向展示/滑动内容的方法

<ListView Name="BoardListView" ScrollViewer.VerticalScrollBarVisibility="Hidden" Height="100" VerticalAlignment="Bottom"> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel/> </ItemsPan

WPF 窗口居中 &amp; 变更触发机制

原文:WPF 窗口居中 & 变更触发机制 窗口居中 & 变更触发机制 解决: 1.单实例窗口,窗口每次隐藏后再显示时,位置居中显示 2.多屏幕下单实例窗口,当父窗口移动到其它屏幕时,单实例窗口再次弹出时,位置才更新到父窗口屏幕. 3.子窗口每次唤醒时,都居中显示. 窗口首次显示的位置 - WindowStartupLocation windows的启动时位置显示,WindowStartupLocation CenterOwner --显示在父窗口的中间(设置Owner) CenterScr

WPF中ListBox滚动时的缓动效果

原文:WPF中ListBox滚动时的缓动效果 上周工作中遇到的问题: 常规的ListBox在滚动时总是一格格的移动,感觉上很生硬. 所以想要实现类似Flash中的那种缓动的效果,使ListBox滚动时可以很流畅. 修改模板里的动画效果是一种方法,不过这里有更简单的,WPF为我们提供了行为代码,可以编辑在ListBox的ItemsPanelTemplate模板中,实现方法如下: 右键ListBox选择"编辑其它模板"->"辑项的布局"->"编辑副

WPF Tips: Specify background color of the selected item in listbox

当没有focus在listbox时,selectedItem的background为灰色,只有鼠标点击之后才会变成蓝色.希望即使鼠标没有点击的时候也是蓝色. 解决方法: 在xaml中添加: <ListBox.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/> <SolidColorBrush x:Key=&

WPF中ListBox ListView数据翻页浏览笔记(强调:是数据翻页,非翻页动画)

ListBox和ListView在应用中,常常有需求关于每页显示固定数量的数据,然后通过Timer自动或者手动翻页操作,本文介绍到的就是该动作的实现. 一.重点 对于ListBox和ListView来讲,后台绑定的ItemSource绑定的一般都是List<T>格式,而List<T>有个方法是Take和Skip,分别意思是取List部分和跳过List部分. 取数据的格式是:List.take().Skip(); 二.话不多说,实例说话(后面会附有该例子链接,仅供参考) (1)Xam

Unity UI的功能解锁,红点Tips,特效触发的做法思考

首先解锁比较特殊,有明确的行为,80%都是判断角色等级,然后进行按钮灰显或者隐藏的操作. 而特效和Tips没有明确的行为. 主要需要取舍的2点是主动调用还是回调被动调用,被动调用意味着代码会很乱.没有一个统一的入口,但是主动调用需要传Object参数,也很麻烦. 首先我否决了在层级面板绑定的做法,还是传入路径,但是会初始化一下: public abstract class CBWidget : MonoBehaviour { public abstract void Init(object ho