Gav*_*inB 2 silverlight windows-phone-7 mvvm-light
我只是在使用MVVM Light框架尝试WP7开发.
我正试图在ItemsControl中触发一个按钮命令,本质上它是一个汽车列表,我希望每个元素都有一个编辑按钮.观点的相关部分:
<ItemsControl ItemsSource="{Binding MyCars}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid x:Name="CarViewGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="100" />
<ColumnDefinition Width="Auto" MinWidth="302"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="40" />
<RowDefinition Height="Auto" MinHeight="32" />
<RowDefinition Height="Auto" MinHeight="32" />
<RowDefinition Height="Auto" MinHeight="32" />
</Grid.RowDefinitions>
<TextBlock x:Name="CarName" Text="{Binding Name, Mode=TwoWay}" Margin="7,0" Grid.Row="0" Grid.ColumnSpan="2" FontSize="32" FontWeight="Bold" FontStyle="Normal" />
<TextBlock x:Name="Make" Text="{Binding Make, Mode=TwoWay}" Margin="15,0" Grid.Row="1" Grid.Column="0" FontSize="24" />
<TextBlock x:Name="Model" Text="{Binding Model, Mode=TwoWay}" Grid.Row="1" Grid.Column="1" FontSize="24" />
<TextBlock x:Name="Odometer" Text="{Binding Odometer, Mode=TwoWay}" Margin="15,0" Grid.Row="2" Grid.ColumnSpan="2" FontSize="24" />
<Button x:Name="EditCarButton" Content="Edit" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right" Width="100" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding EditCar}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
我的ViewModel包含:
public RelayCommand OpenNewForm { get; private set; }
public CarViewModel()
{
//Snip
EditCar = new RelayCommand<Car>(c =>
{
CurrentCar = c;
FormVisible = true;
});
}
Run Code Online (Sandbox Code Playgroud)
现在你可以看到我正在尝试传递通过CommandParameter绑定的当前Car对象.我的代表从不开火,所以我猜我在绑定当前的DataContext时遇到了问题.
有人对我做错了什么有任何想法吗?
在DataTemplate中,DataContext默认设置为由DataTemplate表示的项(在这种情况下,Car对象).如果EditCar命令位于主视图模型(也包含MyCars集合)上,则需要显式设置该对象的绑定源.这将是(假设您正在使用MVVM Light的ViewModelLocator并且您的VM名为Main){Binding Source = {StaticResource Locator},Path = Main.EditCar}
干杯,洛朗
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |