
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只能输入整型或浮点型呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)