在线等!怎么在wpf中利用后台的代码给定位置,大小和source,创建image,并在界面显示出来。

在线等!怎么在wpf中利用后台的代码给定位置,大小和source,创建image,并在界面显示出来。,第1张

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的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10136331.html

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

发表评论

登录后才能评论

评论列表(0条)

保存