小编sus*_*t86的帖子

UICollectionView shouldSelectItemAtIndexPath = NO不会避免取消选择旧的选择?

我在CollectionView中有多个项目,但只有少数项目可以选择.我正在使用委托方法处理这个:

- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

如果选择了可选项,则会出现问题,并且在下一步中,如果shouldSelectItemAtIndexPath返回NO,则拒绝选择不可选项,否则将取消选择所选项.

我也试过用

- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

但这是同样的问题.

这是UICollectionView正确的期望行为吗?如果是,如果选择了一个不可选择的项目,我怎样才能避免取消选中我上次选择的项目?

selection uicollectionview

29
推荐指数
1
解决办法
2万
查看次数

如何使用DataTemplate访问列表框中的特定项目?

我有一个ListBox,包括一个带有2个StackPanels的ItemTemplate.我想要访问的第二个StackPanel中有一个TextBox.(将其可见性更改为true并接受用户输入)触发器应为SelectionChangedEvent.因此,如果用户单击ListBoxItem,TextBlock将变为不可见,TextBox将变为可见.

XAML代码:

<ListBox Grid.Row="1" Name="ContactListBox" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ItemsSource="{Binding Contacts}" Margin="0,36,0,0" SelectionChanged="ContactListBox_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
                        <toolkit:ContextMenuService.ContextMenu>
                            <toolkit:ContextMenu>
                                <toolkit:MenuItem Header="Edit Contact" Click="ContactMenuItem_Click"/>
                                <toolkit:MenuItem Header="Delete Contact" Click="ContactMenuItem_Click"/>
                            </toolkit:ContextMenu>
                        </toolkit:ContextMenuService.ContextMenu>

                        <Grid>
                            <Rectangle Fill="{StaticResource PhoneAccentBrush}"
                                           Width="72" Height="72">
                                <Rectangle.OpacityMask>
                                    <ImageBrush ImageSource="/Images/defaultContactImage.png" Stretch="UniformToFill"/>
                                </Rectangle.OpacityMask>
                            </Rectangle>
                        </Grid>
                        <StackPanel>
                            <TextBox Text="{Binding Name}" TextWrapping="Wrap" Visibility="Collapsed"/>
                            <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" />
                            <TextBlock Text="{Binding Number}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextAccentStyle}"/>
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
Run Code Online (Sandbox Code Playgroud)

我想有几种方法可以解决这个问题,但我尝试过没有办法.

我目前的做法是这样的

    private void ContactListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListBoxItem listBoxItem = ContactListBox.SelectedItem as …
Run Code Online (Sandbox Code Playgroud)

c# xaml silverlight-4.0 windows-phone-7

13
推荐指数
1
解决办法
3万
查看次数