将后代对象作为命令参数传递

时间:2017-04-15 07:03:34

标签: c# wpf xaml mvvm

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

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

现在,我想要的是向该命令传递一个参数,即listview宽度。

我尝试通过以下代码执行此操作

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

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

1 个答案:

答案 0 :(得分:0)

问题是您使用Width而非ActualWidth属性进行绑定

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

我假设您的命令已经在运行,并且放在以下标记内:

<i:Interaction.Triggers>
    ....
</i:Interaction.Triggers>

<强> P.S 即可。: 不确定你要对Width中的ViewModel做什么,但在那里处理与GUI相关的事情(如Width)并不是一个好主意。