toolkit:Accordion DataTemplate ListBox TextBlock Interaction.Triggers
困扰好几个小时的问题终于解决了,本人系菜鸟,使用MVVM设计模式,绑定DataTemplate的Command,需要使用
DataContent的资源,否则无法触发ICommand ClickChildMenu
下面是关键代码:
<TextBlock Text="{Binding Title}" FontSize="12" > <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonUp" > <i:InvokeCommandAction Command="{Binding ElementName=LayoutRoot, Path=DataContext.ClickChildMenu}" CommandParameter="{Binding}" /> </i:EventTrigger> </i:Interaction.Triggers> </TextBlock>
<toolkit:Accordion x:Name="theList" SelectionMode="ZeroOrOne" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontSize="12" ItemsSource="{Binding Catalog}"> <toolkit:Accordion.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding CatalogName}" FontSize="12" /> </StackPanel> </DataTemplate> </toolkit:Accordion.ItemTemplate> <toolkit:Accordion.ContentTemplate> <DataTemplate> <ListBox x:Name="mListBox" ItemsSource="{Binding ChildMenus}" BorderThickness="0" > <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Title}" FontSize="12" > <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonUp" > <i:InvokeCommandAction Command="{Binding Source={StaticResource vm}, Path=ClickChildMenu}" CommandParameter="{Binding}" /> </i:EventTrigger> </i:Interaction.Triggers> </TextBlock> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </DataTemplate> </toolkit:Accordion.ContentTemplate> </toolkit:Accordion>
浙公网安备 33010602011771号