2012-11-20 118 views
2

目前我在一个大型软件项目中进行协作,并且遇到了一个我试图实现的很好功能的问题。如何自动滚动到wrappanel中的特定项目?

问题是,我不知道如何自动滚动到可以被某些用户选择的特定项目。这个wrappanel被用作itemcontrol中的一个itemspaneltemplate。

的代码如下为了更好地理解:

<ItemsControl ItemsSource="{Binding SomeData}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
     <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
     <SomeChart DataContext="{Binding }" Focusable="True" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

对不起,我不好解释我的问题不是我不能设置焦点。我的问题是自动滚动到所选项目,以便显示。该列表比显示更长,此时您必须手动滚动。 – Kimbo

回答

2

你提到的ItemsControl,大部分是从一个ItemsControl派生的控件有ScrollIntoView方法来滚动列表框/ DataGrid添加到当前选择的项目。

例如:

listBox1.ScrollIntoView(listBox1.SelectedIndex); 

dataGrid1.ScrollIntoView(dataGrid1.SelectedIndex); 

下面是一个ListView另一种解决方案。

更新: 列表框与Wrappanel

<ListBox x:Name="myList"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel ItemHeight="150" ItemWidth="150"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</Listbox> 
+0

是的,像scrollintoview方法正是我所需要的,但一个wrappanel没有这样的方法。我可以使用哪种替代方法?在itemscontrol? – Kimbo

+1

我不完全确定你要做什么,但为什么不把一个wrappanel放在一个ListBox而不是一个ItemsControl?在我的回答中添加了示例 – Blachshma

+0

对不起,这是我的错。我不知道列表框是itemscontrol的替代品。感谢您的帮助,正是我需要的。 – Kimbo

相关问题