将后代对象作为命令参数传递 [英] Pass descendant object as command parameter

查看:69
本文介绍了将后代对象作为命令参数传递的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好!所以我正在使用MVVM架构模式创建一个WPF应用程序。在这个应用程序里面我有一个listview。我已经使用这段XAML代码将窗口的SizeChanged事件绑定到命令:

< i:EventTrigger EventName =SizeChanged> 
< i:InvokeCommandAction Command ={Binding WindowSizeChangedCommand}/>
< / i:EventTrigger>





现在,我想要的是传递给这个命令一个参数,这是列表视图宽度。



我尝试通过以下代码:



< i:EventTrigger EventName =SizeChanged> 
< i:InvokeCommandAction Command ={Binding WindowSizeChangedCommand}CommandParameter ={Binding Width,ElementName = listView}/>
< / i:EventTrigger>



事情是它不起作用! Hhahahahaha我知道如何用XAML找到一个祖先对象。但我不知道如何做相反的事情。任何想法该怎么办?非常感谢你的时间!



我的尝试:



< pre>< i:EventTrigger EventName =SizeChanged> 
< i:InvokeCommandAction Command ={Binding WindowSizeChangedCommand}CommandParameter ={Binding Width,ElementName = listView}/>
< / i:EventTrigger>

解决方案

< i:EventTrigger EventName =SizeChanged > 
< i:InvokeCommandAction Command ={Binding WindowSizeChangedCommand}CommandParameter ={Binding ElementName = listView,Path = ActualWidth}/>
< / i:EventTrigger>





  public  RelayCommand WindowSizeChangedCommand 
{
get
{
if (WindowSizeChangedCommand == null
WindowSizeChangedCommand = new RelayCommand( param = > WidowSizeChanged(param));

return WindowSizeChangedCommand;
}
}

public void WindowSizeChanged( object param)
{
int width = Convert.ToInt32(param);
}





我尝试了这个确切的代码,将事件触发器置于< window>下标签,它适用于我。


Hello ! So i am creating a WPF application using the MVVM architectural pattern. Inside this application i have a listview. I have binded the SizeChanged event of the window to a command using this piece of XAML code:

<i:EventTrigger EventName="SizeChanged">
            <i:InvokeCommandAction Command="{Binding WindowSizeChangedCommand}"/>
        </i:EventTrigger>



Now, what i want is to pass to this command a parameter, which is the listview width.

I tried to to this by the following code:

<i:EventTrigger EventName="SizeChanged">
            <i:InvokeCommandAction Command="{Binding WindowSizeChangedCommand}" CommandParameter="{Binding Width, ElementName=listView}"/>
        </i:EventTrigger>


The thing is that it doesn't work ! Hhahahahaha I know how to find an ancestor object with XAML. But i don't know how to do the opposite. Any ideas what to do ?? THank you very much for your time !

What I have tried:

<pre><i:EventTrigger EventName="SizeChanged">
            <i:InvokeCommandAction Command="{Binding WindowSizeChangedCommand}" CommandParameter="{Binding Width, ElementName=listView}"/>
        </i:EventTrigger>

解决方案

<i:EventTrigger EventName="SizeChanged">
            <i:InvokeCommandAction Command="{Binding WindowSizeChangedCommand}" CommandParameter="{Binding ElementName=listView, Path=ActualWidth}"/>
        </i:EventTrigger>



public RelayCommand WindowSizeChangedCommand
{
    get
    {
        if (WindowSizeChangedCommand == null)
                WindowSizeChangedCommand = new RelayCommand(param => WidowSizeChanged(param));

            return WindowSizeChangedCommand;
    }
}

public void WindowSizeChanged(object param)
{
    int width = Convert.ToInt32(param);
}



I tried this exact code putting the event trigger under the <window> tag, and it works for me.


这篇关于将后代对象作为命令参数传递的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆