如何在WPF中隐藏使用命令发送命令的窗口?

时间:2013-07-06 22:51:50

标签: wpf vb.net binding

我正在使用WPF,我尝试关注MVVM。 所以我有一个将我的模型作为属性的VM。 Model有一个属性,它是model1的列表,它实现了一个命令。 我不想将命令移动到ViewModel的原因,所以我可以访问视图是我不知道我的列表将有多少元素,我想确保我的命令访问其model1 。 这个命令也做了一些处理,我希望在这个处理过程中,窗口可以隐藏绑定到命令的按钮。 我怎样才能做到这一点?我应该在哪里看?

1 个答案:

答案 0 :(得分:1)

在这种情况下,最好是ViewModel具有该命令,并且它需要一个参数。这样,您将传递用户尝试修改的项目。所以如果你有一个ItemsControl

<ItemsControl ItemsSource="{Binding MyItems}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding Name, StringFormat=Push {0}}"
                    Command="{Binding DataContext.ItemPushedCommand, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                    CommandParameter="{Binding}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

在ViewModel中,您可以像这样定义命令(我正在使用prism中的DelegateCommand,您可以使用您熟悉的任何命令):

private readonly DelegateCommand<Model> itemPushedCommand;

public ICommand ItemPushedCommand { get { return itemPushedCommand; } }

public MyViewModel()
{
    itemPushedCommand = new DelegateCommand<Model>(OnItemPushed);
}

private void OnItemPushed(Model item)
{
    // your item has been pushed!
}