【问题标题】:ListBox inside ListBox and selectedItem / EventsListBox 内的 ListBox 和 selectedItem / 事件
【发布时间】:2012-03-28 20:58:40
【问题描述】:

我已经被这个问题困扰了一段时间,所以我想请教这里的专家。

首先是 XAML:

<ListBox Grid.Column="0" Tap="Some_Tap" SelectionChanged="Some_SelectionChanged">

                    <ListBox.ItemTemplate>
                        <DataTemplate>

                            <!-- the panel which covers a complete list item -->
                            <StackPanel Orientation="Vertical">

                                <!-- start and end time for the travel route-->
                                <Grid HorizontalAlignment="Center">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="100"/>
                                        <ColumnDefinition Width="100"/>
                                        <ColumnDefinition Width="100"/>
                                        <ColumnDefinition Width="100"/>
                                    </Grid.ColumnDefinitions>

                                    <Grid.RowDefinitions>
                                        <RowDefinition/>
                                        <RowDefinition/>
                                    </Grid.RowDefinitions>


                                    <!-- some textblock items, removed to keep this simple -->
                                </Grid>

                                <!-- list box for images -->
                                <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"  ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemsSource="{Binding Thumbs}" HorizontalAlignment="Center" Margin="0,10,0,50">
                                    <ListBox.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" />
                                        </ItemsPanelTemplate>
                                    </ListBox.ItemsPanel>

                                    <ListBox.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Vertical" HorizontalAlignment="Center">

                                                <Image Source="{Binding Image}" HorizontalAlignment="Center"/>
                                                <TextBlock Text="{Binding Text}" HorizontalAlignment="Center" FontWeight="{Binding FontWeightForText}">
                                                    <TextBlock.Foreground>
                                                        <SolidColorBrush Color="{StaticResource PhoneForegroundColor}"/>
                                                    </TextBlock.Foreground>
                                                </TextBlock>

                                            </StackPanel>
                                        </DataTemplate>
                                    </ListBox.ItemTemplate>

                                </ListBox>

                            </StackPanel>
                        </DataTemplate>

                    </ListBox.ItemTemplate>

                </ListBox>

从 XAML 中可以看出,我在另一个 ListBox 的数据模板内有一个 ListBox。我已经连接了 Tap & SelectionChanged 事件。

问题:

  1. 我无法点击内部列表框覆盖的区域,外部列表框的点击或选择更改事件不会为外部列表框触发。

  2. 我也可以为内部列表框连接点击和选择更改事件,但是我怎么知道这个内部列表框属于外部列表框中的哪个项目,selectedindex。

帮助??

-A

【问题讨论】:

  • 通过稍微改变XAML解决,没有C#代码改变XAML。内部 ListBox 已更改为 ItemsControl,如下面的 Ku6opr 所回答。

标签: silverlight windows-phone-7 xaml


【解决方案1】:

如果您不需要在列表中选择项目,请改用ItemsControl(在这种情况下用于内部列表)

【讨论】:

  • 所以这很好用,不过我对此表示怀疑。我只是将内部 ListBox 更改为 ItemsControl (更改了 XAML 中的标签),然后它就起作用了。
【解决方案2】:

只需设置内层ListBox控件IsEnabled = false,外层的Tap事件就会开始执行!

【讨论】:

  • 我可以这样做,但是因为 ListBox 具有不同的禁用模式模​​板,所以列表框看起来很难看。如果我使用这个解决方案,我也需要为禁用模式定义一个新样式。
  • 是的,但是您可以继续编辑 ListBox 模板并删除禁用状态的视觉状态! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多