wpf如何知道数据源的更改是界面输入

wpf如何知道数据源的更改是界面输入,第1张

wpf中界面中绑定数据源后,数据在界面上的修改能反映到绑定源

View Code

32、命令绑定

在上面代码我们给按钮 Command 绑定了 Add Update Delete,接下来我们就开始实现功能

我们新建一个文件DelegateCommandscs 实现接口ICommand

复制代码

public class DelegateCommands : ICommand

{

public Action<object> ExecuteCommand = null;

public Func<object, bool> CanExecuteCommand = null;

//当命令可执行状态发生改变时,应当被激发

public event EventHandler CanExecuteChanged;

//用于判断命令是否可以执行

public bool CanExecute(object parameter)

{

if (CanExecuteCommand != null)

{

return thisCanExecuteCommand(parameter);

}

else

{

return true;

}

}

//命令执行

public void Execute(object parameter)

{

if (thisExecuteCommand != null) thisExecuteCommand(parameter);

}

}

复制代码

回到ShowDataViewModelcs 定义下面命令

复制代码

public DelegateCommands AddCommand { get; set; }

public DelegateCommands UpdateCommand { get; set; }

public DelegateCommands DeleteCommand { get; set; }

复制代码

把 *** 作对应的方法写好

View Code

在进行绑定一下这样我们就能实现增删改了

复制代码

public ShowDataViewModel()

{

AddCommand = new DelegateCommands();

AddCommandExecuteCommand = new Action<object>(addStudent);

UpdateCommand = new DelegateCommands();

UpdateCommandExecuteCommand = new Action<object>(updateStudent);//修改方法

DeleteCommand = new DelegateCommands();

DeleteCommandExecuteCommand = new Action<object>(deleteStudent);//修改方法

mylistAdd(new User() { ID = 1, Name = "张三", Age = 20, Sex = "女", Remarks = "无" });

mylistAdd(new User() { ID = 2, Name = "李四", Age = 21, Sex = "女", Remarks = "无" });

mylistAdd(new User() { ID = 3, Name = "王五", Age = 22, Sex = "女", Remarks = "无" });

mylistAdd(new User() { ID = 4, Name = "赵六", Age = 24, Sex = "女", Remarks = "无" });

Binding();

}

复制代码

33、事件绑定

如果我们想点击控件里面的一行,下面对应的文本框就显示我们该怎么样呢?

回到View给DataGrid绑定事件 首先我们需要给项目添加引用:SystemWindowsInteractivity 并且给页面引用命名空间

xmlns:i="clr-namespace:SystemWindowsInteractivity;assembly=SystemWindowsInteractivity"

复制代码

<DataGrid SelectionUnit="FullRow" AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding ShowList,Mode=TwoWay}" x:Name="dataGrid" VerticalAlignment="Top" Height="182" HorizontalAlignment="Left" Width="408">

<i:InteractionTriggers>

<i:EventTrigger EventName="SelectionChanged" >

<i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" CommandParameter="{Binding ElementName=dataGrid}" />

</i:EventTrigger>

</i:InteractionTriggers>

<DataGridColumns>

<DataGridTextColumn Binding="{Binding ID}" Header="编号"/>

<DataGridTextColumn Binding="{Binding Name}" Header="姓名" Width="100"/>

<DataGridTextColumn Binding="{Binding Age}" Header="年龄"/>

<DataGridTextColumn Binding="{Binding Sex}" Header="性别" Width="60"/>

<DataGridTextColumn Binding="{Binding Remarks}" Header="备注" Width="172"/>

</DataGridColumns>

</DataGrid>

复制代码

我们在这里CommandParameter参数传的是控件dataGrid

然后我们去ViewModel ShowDataViewModelcs

复制代码

public ICommand SelectionChangedCommand

{

get

{

return new DelegateCommand<DataGrid>((datagrid) =>

{

if (datagridSelectedItemsCount > 0)

{

user =(User)datagridSelectedItems[0];

ID = userID;

Name = userName;

Age = userAge;

Sex = userSex;

Remarks = userRemarks;

}

});

}

}

复制代码

上一步 需添加引用 MicrosoftPracticesPrismdll 这样就完成了

这样一个小案例就完成了。

三个数字求最大可以不用循环,下面这样的逻辑就可以:

MAX = A;

IF B>MAX THEN MAX=B;

IF C>MAX THEN MAX=C;

这个是可以的

用正则表达式

或都用键盘键下事件来判断所输入的符是不是数字

如果是数字则允许输入

不是数字则不允许输入

还是一个就是点的字符也是允许输入的

不过在允许之前要查找一下

如果TextBox中已经有了的话

则也不允许输入

没有则允许输入

朋友

参考一下吧

希望能够帮到你

以上就是关于wpf如何知道数据源的更改是界面输入全部的内容,包括:wpf如何知道数据源的更改是界面输入、Visual studio2012wpf应用程序输入三个数字利用数组求最大值、如何让wpf 中的textbox只能输入整型或浮点型呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10157075.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存