是否有任何方法可以在我的DelegateCommand
ListView
内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
我的OpenCommand
没有错误。绑定中存在错误。
我可以使用以下代码在MainPage
xaml中轻松使用 d:DataContext="{d:DesignInstance Type=local:MainViewModel, IsDesignTimeCreatable=True}"
<Button Content="Click" Command="{Binding OpenCommand"/>
:
OpenCommnad
如何将 <ListView x:Name="peopleListBox">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<UserControls:ItemTemplateControl/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
绑定到UserControl?
对不起我的英文,并提前致谢!
这是我的ListView:
{{1}}
答案 0 :(得分:0)
在构建UserControl时
this.DataContext = new MainViewModel();
d:DataContext
只是设计时DataContext设置,不会在运行时应用。
答案 1 :(得分:0)
以它的名字命名,DesignInstance
用于设计时而非运行时。
在MVVM中,设置ViewModel
有两种方法。
ViewFirst 或 ViewModelFirst - 取决于您自上而下或自下而上构建应用。
for ViewFirst 您可以从xaml设置DataContext
:
<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中的属性绑定到ListBox
中的项目,请将按钮绑定到UserControl
内,如下所示:
<Button Content="Click"
Command="{Binding DataContext.OpenCommand,
RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
/>
希望这有帮助