我正在查看这个 MVVM 的东西,我遇到了一个问题。
情况很简单。
我的 index.xaml 页面中有以下代码
<Grid>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<view:MovieView ></view:MovieView>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
在我的 index.xaml.cs
...
初始化组件();base.DataContext = new MovieViewModel(ent.Movies.ToList()); ……
这是我的 MoveViewModel
public class MovieViewModel
{
readonly List<Movies> _m;
public ICommand TestCommand { get; set; }
public MovieViewModel(List<Movies> m)
{
this.TestCommand = new TestCommand(this);
_m = m;
}
public List<Movies> lm
{
get
{
return _m;
}
}
}
最后
这是我的控制 xaml MovieView
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label VerticalAlignment="Center" Grid.Row="0" Grid.Column="0">Title :</Label><TextBlock VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" Text="{Binding Title}"></TextBlock>
<Label VerticalAlignment="Center" Grid.Row="1" Grid.Column="0">Director :</Label><TextBlock VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" Text="{Binding Director}"></TextBlock>
<Button Grid.Row="2" Height="20" Command="{Binding Path=TestCommand}" Content="Edit" Margin="0,4,5,4" VerticalAlignment="Stretch" FontSize="10"/>
</Grid>
所以我遇到的问题是,如果我在 Binding 设置 ItemsSource
它什么也没做
如果我设置 ItemsSource="{Binding lm}"
它填充了我的 itemsControl 但命令 (Command="{Binding Path=TestCommand}" ) 不起作用。
当然它不起作用,因为 TestCommand 不属于我的实体对象 Movies。
所以最后我的问题是,
我需要将什么传递给 ItemsControl 才能使其正常工作?
提前谢谢