设为首页 加入收藏

TOP

WPF开发为按钮提供添加,删除和重新排列ListBox内容的功能(二)
2019-09-17 18:13:39 】 浏览:36
Tags:WPF 开发 按钮 提供 添加 删除 重新 排列 ListBox 内容 功能
方法)中
删除IList)。然后使用该Selector Insert方法插入删除的项目

接下来检查是否现在是第一个项目,禁用Button它是否为,并且Selector SelectedIndex设置为仍然指向同一个项目。

码几乎是相同的,则删除要简单得多,因为它没有保存已删除的项目,然后将其放回IList

最后,有适当的代码启用或禁用Button取决于是否存在SelectedItemSelectedItem是第一个(用于上)或最后一个项目IList(用于下移)。这是SelectedItemSelector触发事件时调用的事件处理程序

private static void SetMoveItemUpButtonIsEnabled(object sender, RoutedEventArgs e) { <code> Debug.Assert(sender is Selector); var Selector = (Selector)sender; var IList = CheckForIList(Selector); var itemNumber = Selector.SelectedIndex; var Button = (ButtonBase) Selector.GetValue(MoveUpButton); Button.IsEnabled = (itemNumber >= 1 && itemNumber < IList.Count); }</code> 

对于这种需要IList绑定到ItemsSourceSelectedIndex,并需要得到Button保存为一个附加属性在此功能Selector对于Remove函数,只需要知道if SelectedIndex是否等于-1,这样简单得多。

使用行为

要使用此行为,只需要一个从Selector控件派生的列表控件,Name为此控件关联一个值,并Button为每个应该实现的函数定义一个网站源码。在每一个Button XAML只包括ListHelperBahaviorDependencyProperty它有关联BindingSelector

<Grid Margin="10"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <ListBox Name="TheList"              ItemsSource="{Binding List}"              HorizontalAlignment="Stretch"              VerticalAlignment="Stretch"  > <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"/> <ColumnDefinition Width="200"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding ItemNumber}"/> <TextBlock Grid.Column="1"                                Text="{Binding TimeCreated}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <StackPanel Grid.Row="2"                 Margin="-5 5"                 Orientation="Horizontal"                 HorizontalAlignment="Right"> <Button Content="Add"                 Width="70"                 Margin="5"                 local:ListHelperBehavior.AddToList="{Binding ElementName=TheList}"/> <Button Content="Remove"                 Width="70"                 Margin="5"                 local:ListHelperBehavior.RemoveFromList="{Binding ElementName=TheList}"/> <Button Content="Move Up"                 Width="70"                 Margin="5"                 local:ListHelperBehavior.MoveItemUp="{Binding ElementName=TheList}"/> <Button Content="Move Down"                 Width="70"                 Margin="5"          local:ListHelperBehavior.MoveItemDown="{Binding ElementName=TheList}"/> </StackPanel> 

WPF行为的图像2为按钮提供了添加,删除和重新排列ListBox内容的功能

问题

行为存在一些限制,其中一些可以使用其他代码进行处理。
其中一个问题是行为预期绑定到该类型Selector的类型的IList,这意味着这两个ListObservableCollection可使用,但Array Type不能。这可以编码,但需要Array每次重新创建

另一个限制是Add只有Type在它IList是一个类时才有效,并且有一个默认的构造函数。

当然另一个限制是它只处理从控件派生的Selector控件。

结论

这是一个非常好的小行为,因为它允许更改列表的顺序,并通过仅将行为添加Button到实现该功能的每个项目来添加或删除项目ViewModel中无需任何操作即可提供此功能。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇.net core下Redis帮助类 下一篇Windows 10 安装ElasticSearch(2..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目