wpf 右键ListBox可编辑

摘要:
以前,wpf项目使用列表框的右键编辑功能。考虑到当时很难找到信息,我特意将我的结果分享给大家讨论。首先添加一个列表框背景代码:TextBoxtxtNode=newTextBox();ListBoxItemselectNode=null;字符串数据;//将数据绑定到列表框;阵列不限于阵列。这里我们使用数组作为示例;publicvoidBindingData(){ListBoxItemtvi;MenuItemmenuitem;ContextMenucontextmenu;for{tvi=newListBoxItem();tvi.Content=Array[i].Owner;tvi.Name=“_”+Array[i].id.ToString();contextmenuenu=newSystem.Windows.Controls.contextmenu();menuitem=newMenuItem(); 菜单项。单击+=newRoutedEventHandler;上下文菜单项。添加上下文菜单。宽度=130;电视。ContextMenu=上下文菜单;电视。GotFocus+=newRoutedEventHandler;////列表_联席人.项目。添加;}}//编辑框失去焦点模式1:private void List_ lianxiren_ MouseDown{EditNameSaveToServer();}//单击编辑按钮以更改为编辑框void菜单项_单击{selectNode=List_lianxiren.SelectedItemasListBoxItem;txtNode=newTextBox();if(!){olddata=selectNode.Content.ToString();txtNode.Text=selectNode.Content.ToSString();txtNode.MaxLength=20;txtMode.Focus();selectNode:Content=txtNode;}//编辑框失去焦点模式2 void tvi_GotFocus{if{selectNode=senderasListBoxItem;txtNode=newTextBox();txtMode.Text=selectNode.Content.ToString();olddata=selectNode。Content.ToString();}编辑名称保存到服务器();}//编辑框失去焦点后的处理事件。它用于将数据保存到服务器。

之前wpf项目用到listbox右键编辑的功能,想到当时找资料不好找,特地将自己的结果拿出来与大家分享,探讨。

首先添加一个listbox。
  <ListBox x:Name="List_lianxiren" MouseDown="List_lianxiren_MouseDown"  SelectionMode="Extended" Margin="15,0" />

后台代码:

TextBox txtNode = new TextBox();
ListBoxItem selectNode = null;

string olddata;

//绑定数据到listboxitem;其中array不仅仅局限于数组,此处用数组举例而已;
public void BindingData()
{
        ListBoxItem tvi;
            MenuItem menuitem;
            ContextMenu contextmenu;
            for (int i = 0; i < Array.Length; i++)
            {
                tvi = new ListBoxItem();

                tvi.Content = Array[i].Owner;
                tvi.Name = "_" + Array[i].id.ToString();

                contextmenu = new System.Windows.Controls.ContextMenu();
                menuitem = new MenuItem();
                menuitem.Header = "编辑";
                menuitem.Click += new RoutedEventHandler(menuitem_Click);
                contextmenu.Items.Add(menuitem);
                contextmenu.Width = 130;
                tvi.ContextMenu = contextmenu;
                tvi.GotFocus += new RoutedEventHandler(tvi_GotFocus);////
                List_lianxiren.Items.Add(tvi);
            }

}

//编辑框失去焦点方式一
private void List_lianxiren_MouseDown(object sender, MouseButtonEventArgs e)
{ EditNameSaveToServer(); }

//点击编辑按钮,变为编辑框

 void menuitem_Click(object sender, RoutedEventArgs e)
{
            selectNode = List_lianxiren.SelectedItem as ListBoxItem;

            txtNode = new TextBox();
            if (!(selectNode.Content is TextBox))
            {
                olddata= selectNode.Content.ToString();
                txtNode.Text = selectNode.Content.ToString();
                txtNode.MaxLength = 20;
                txtNode.Focus();
                selectNode.Content = txtNode;
            }
}

//编辑框失去焦点方式二

void tvi_GotFocus(object sender, RoutedEventArgs e)
{
            if (selectNode == null)
            {
                selectNode = sender as ListBoxItem;
                txtNode = new TextBox();
                txtNode.Text = selectNode.Content.ToString();
                olddata= selectNode.Content.ToString();
            }
            EditNameSaveToServer();
}

//编辑框失去焦点后的处理事件,将数据保存到服务器什么的处理。
private void EditNameSaveToServer()
{
            if (!string.IsNullOrWhiteSpace(txtNode.Text))
            {
                selectNode.Content = txtNode.Text;
            }
            else
            {
                selectNode.Content = olddata;
            }
}

个人小站欢迎来踩:驾校教练评价平台 | 为爱豆砌照片墙

  

免责声明:文章转载自《wpf 右键ListBox可编辑》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇详解SQL Server的两个存储过程:sp_MSforeachtable/sp_MSforeachdbOracle中的关键字下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF模式思考 (zt)

Introduction Since XAML things have become a bit complicated in trying to conceptualize MVC architectures for Windows applications. The gap between web and win is narrowing and th...

WPF 数据验证

  在软件UI界面录入数据时候,为了保证数据的正确、有效、规范性,很多情况下都要验证数据的有效性。比如录入某个人的信息,那么我们就需要对这个人的姓名验证是否为空字符串,年龄是否为有效数字,性别是否为男或女等等。   在WPF开发中,数据的验证和数据绑定结合在一起,实现起来很优雅。我们可以让数据Model(模型)实现IDataErrorInfo接口来实现每个...

WPF DataGrid出现红框处理

当DataGrid属于单元格选中时出现红框,是因为WPF中DataGrid拥有默认的验证属性,如需关闭,请在DataGrid中加入以下属性: Validation.ErrorTemplate="{x:Null}" 搬运转发请链接注明出处。  ...

Wpf杀死所有线程、Wpf关闭程序杀死所有线程

Wpf关闭程序杀死所有线程: Process.GetCurrentProcess().Kill(); using System.Diagnostics; private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { Process.Get...

DevExpress WPF让创建绑定到数据的3D图表控件变得更容易(Part 1)

下载DevExpress v20.1完整版 富文本控件难上手?这堂公开课你一定不能错过,不同视图不同应用场景全解! 通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 在本教程中,您将完成可视化数据源所需的步骤。 应该执行以下步骤,本文我们将...

WPF中RadioButton的分组

当界面上出现多组Radiobutton时,将所有的Radiobutton写在同一个Grid里面,导致系统认为所有的Radiobutton是同一组,造成选择混乱,解决的方法: 1.要为属于同个组的Radiobutton设置相同的GroupName,绑定同一个变量; 2.若没有为Radiobutton设置GroupName,则将属于同一组的Radiobutto...