Windows phone 7 WP7 listbox selection changed事件不会以内容控件样式触发
我一直在琢磨为什么listbox的selection changed事件不会触发。我有一个在代码中动态创建的项目。。。对wpf/xaml来说有点新Windows phone 7 WP7 listbox selection changed事件不会以内容控件样式触发,windows-phone-7,mvvm-light,Windows Phone 7,Mvvm Light,我一直在琢磨为什么listbox的selection changed事件不会触发。我有一个在代码中动态创建的项目。。。对wpf/xaml来说有点新 <Style x:Key="PanoramaItemStyle" TargetType="ContentControl"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetTy
<Style x:Key="PanoramaItemStyle" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Grid>
<controls:PanoramaItem x:Name="ItemLocationPanoramaItem" Header="{Binding TagName}">
<ListBox ItemsSource="{Binding ItemLocators}" Height="496" SelectedItem="{Binding SelectedItemLocation, Mode=TwoWay}" SelectionChanged="ItemLocatorsList_SelectionChanged" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate >
<StackPanel Orientation="Vertical" ScrollViewer.VerticalScrollBarVisibility="Auto" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,17">
<StackPanel Width="311">
<TextBlock Text="{Binding Item.Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}"/>
<TextBlock Text="{Binding Location.Description}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</controls:PanoramaItem>
<ContentPresenter/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="White"/>
</Style>
请参阅我对如何使用mvvm动态生成全景项目和列表框的回答,即没有代码隐藏。如果您使用mvvm light,您可以执行以下操作(填写代码以获取备注):
您必须提供更多关于您的实际问题的信息!您提到ListBox SelectionChanged事件没有触发,但您的代码片段都是关于填充全景控件的。我首先要简化您的代码,直到它成为说明您的问题的最简单示例,然后更新您的问题选项。您的问题是什么?您包含的代码中没有任何可以确定为列表框的内容。也没有对SelectionChanegd事件的引用。为什么
mvvm light
标记?同样,代码中没有任何内容引用它?我想知道为什么我原来帖子中的xaml没有显示出来这是我的原始帖子..想知道为什么xaml没有出现。我检查了其他帖子..这并没有解决这个特定问题代码和Xml需要在最后4个空格或1个制表符前加前缀才能格式化为代码。xaml的第一行没有任何缩进,因此下面的块没有被视为代码并隐藏.
public LocationGroups()
{
InitializeComponent();
LocationGroupsPanaroma.DefaultItem = LocationGroupsPanaroma.Items[0];
viewModel = this.DataContext as LocationGroupsViewModel;
CreateDynamicPanaromaItems();
}
private void CreateDynamicPanaromaItems()
{
foreach (Model.LocationGroup group in viewModel.LocationGroups)
{
if (group.TotalItems > 0)
{
PanoramaItem pi = new PanoramaItem();
pi.Header = group.Name;
pi.Orientation = System.Windows.Controls.Orientation.Horizontal;
ItemLocationListViewModel itemLocationViewModel = viewModel[group.LocationGroupId];
pi.DataContext = itemLocationViewModel;
pi.Style = Resources["PanoramaItemStyle"] as Style;
LocationGroupsPanaroma.Items.Add(pi);
}
}
}
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<mvvm:EventToCommand
Command="{Binding <yourviewmodel>.<yourrelaycommand>, Mode=OneWay, Source={StaticResource Locator}}" CommandParameter="{Binding SelectedValue, ElementName=<nameofyourlistbox>}"/>
</i:EventTrigger>