xaml中放个Grid 起个名字比如name=grid,后台代码中创建Image ,
Image image=new Image();
imageWidth=XXX;
imageHeight=XXX;
imageSource=XXX;
位置自己设置
thisgridChildrenAdd(image);
这样就可以了
1:WPF绘制窗口和控件的语法确实是像写html。
2:WPF是基于MVVM模式的开发技术,可以让大多数控件直接绑定数据源和事件,同时支持双向绑定,即控件中的数据改变可以直接导致后台数据改变,而不需要写赋值代码。而传统的窗口和控件只有单项绑定,即只能从数据到控件,反过来的话,就要写代码赋值了。
3:WPF绘制的表格是布局控件,用来布局的,不能直接连接数据源。要连接数据源的话,可以使用专门的数据表格控件。
1、首先打开wpf系统并进入主界面。
2、其次对UIElement重写OnRender方法进行渲染的内容。
3、最后点击tackPanel1相对于grid的坐标并进行输入即可。
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 这样就完成了
这样一个小案例就完成了。
以上就是关于在线等!怎么在wpf中利用后台的代码给定位置,大小和source,创建image,并在界面显示出来。全部的内容,包括:在线等!怎么在wpf中利用后台的代码给定位置,大小和source,创建image,并在界面显示出来。、怎么使用WPF制作好看的控件和界面、wpf代码中,怎么样输出stackpanel的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)