WPF委托命令DelegateCommand的传参方式

首先引用  Microsoft.Practices.Prism

MVVM模式代码如下:

XAML代码:

<!-- 无参方式 -->
<Button Content="Test Command" Command="{Binding TestCommand}" />

<!-- 将自己作为参数 -->
<Button Content="Test Command2" Command="{Binding TestCommand2}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" >

<!-- 将父元素作为参数 -->
<Button Content="Test Command3" Command="{Binding TestCommand3}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.TemplatedParent}}" >

后台代码:

this.DataContext = new ViewModel();

ViewModel代码:

// ViewModel 构造函数
public ViewModel()
{    
    CallCOmmand1 = new DelegateCOmmmand(Call1);
    CallCOmmand2 = new DelegateCOmmmand<Object>(Call2);
    CallCOmmand3 = new DelegateCOmmmand<Object>(Call3);
}

// 命令声明
public DelegateCommand CallCommand { get; private set; }
public DelegateCommand<Object> CallCommand2 { get; private set; }
public DelegateCommand<Object> CallCommand3 { get; private set; }

// 命令实现
public void Call1()
{
}

public void Call2( Object obj )
{
    Button button = obj as Button;
}

public void Call3( Object obj )
{
    ParentType parent = obj as ParentType;
}

  

  

  

转载于:https://www.cnblogs.com/sntetwt/p/11315738.html

WPF中,可以使用ParameterizedThreadStart委托来创建带参数的线程。该委托的参数类型必须是Object。你可以在Main方法中创建一个新的线程,并使用ParameterizedThreadStart委托将带有参数的方法作为参数传递给线程。例如: ``` private void Main() { Thread t1 = new Thread(new ParameterizedThreadStart(ThreadMethod)); t1.IsBackground = true; t1.Start("thread param"); } private void ThreadMethod(object param) { //Thread method Console.WriteLine(param.ToString()); } ``` 另外,在WPF中也可以创建不带参数的线程。你可以使用ThreadStart委托来创建不带参数的线程。例如: ``` private void Main() { Thread t1 = new Thread(new ThreadStart(ThreadMethod)); t1.IsBackground = true; //默认后台线程 t1.Start(); } private void ThreadMethod() { //Thread method } ``` 在WPF中,如果希望在子线程中更新界面,可以使用Application.Current.Dispatcher.Invoke方法。通过将需要在主线程上执行的代码包装在lambda表达式中,可以使用Dispatcher.Invoke方法在主线程上执行该代码。例如: ``` Application.Current.Dispatcher.Invoke(() => { //your logic }); ``` 通过使用这种方式,你可以在子线程中委托主线程来完成特定的任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C#及WPF多线程定义和使用1(Thread)](https://blog.csdn.net/lvxingzhe3/article/details/121049576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [WPF入门9:线程(Thread)](https://blog.csdn.net/kalvin_y_liu/article/details/127209725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值