0

有什么方法可以使用 my DelegateCommandinside my ListViewwith UserControl

用户控制:

<UserControl
    x:Class="App13.UserControls.ItemTemplateControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App13"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    d:DataContext="{d:DesignInstance Type=local:MainViewModel, IsDesignTimeCreatable=True}"
    mc:Ignorable="d">
        <Grid>
        <Button Content="Click" Command="{Binding OpenCommand"/>
    </Grid>
</UserControl>

我的MainViewModel. 绑定有错误。我可以使用以下代码轻松地OpenCommandMainPagexaml 中使用:

 d:DataContext="{d:DesignInstance Type=local:MainViewModel, IsDesignTimeCreatable=True}"

<Button Content="Click" Command="{Binding OpenCommand"/>

如何绑定OpenCommnad到我的 UserControl?对不起我的英语,提前谢谢!

这是我的列表视图:

 <ListView x:Name="peopleListBox">

                <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                            <UserControls:ItemTemplateControl/>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
4

2 回答 2

0

在你的 UserControl 的构造中做

this.DataContext = new MainViewModel();

d:DataContext只是在运行时未应用的设计时 DataContext 设置。

于 2013-10-10T15:56:13.740 回答
0

顾名思义,它DesignInstance适用于设计时而不是运行时。

在 MVVM 中,有两种设置ViewModel.

ViewFirstViewModelFirst - 取决于您是自上而下还是自下而上构建应用程序。

对于ViewFirst您可以DataContext从您的 xaml 设置您的:

<UserControl
x:Class="App13.UserControls.ItemTemplateControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App13"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<UserControl.DataContext>
     <local:MainViewModel/>
</UserControl.DataContext>

     <!-- Rest of your implementation ... -->  

</UserControl>

对于ViewModelFirst,在后面的代码中设置它(通常从 View 的构造函数中完成)

this.DataContext = new MainViewModel();

如果要将 viewModel 中的属性绑定到 中的 Item ,请按如下方式ListBox绑定按钮:UserControl

        <Button Content="Click" 
            Command="{Binding DataContext.OpenCommand,
                          RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
            />

希望这可以帮助

于 2013-10-10T15:57:53.833 回答