Здравствуйте! Помогите плиз!
Ситуация:
Есть WPF форма, на ней текстбокс со строкой для поиска и листвью, в который записываются данные в виртуальном режиме по страницам.
Проблема заключается в следующем:
Если вы находитесь не на первой странице листвью, то при поиске листвью не может промотаться в самый вверх, а остается в той же позиции, в которой был. Пробовал несколько вариантов, которые предлагаются в гугле, что-то ничего не помогает. По идее первый элемент я получить могу,вот только
lvProduct.ScrollIntoView(lvProduct.SelectedItem);
на него не делаеться. Может у кого-нить был опыт.
28.10.10 11:04: Перенесено из '.NET'
Здравствуйте, coresh1988, Вы писали:
C>Здравствуйте! Помогите плиз!
C>Ситуация:
C>Есть WPF форма, на ней текстбокс со строкой для поиска и листвью, в который записываются данные в виртуальном режиме по страницам.
C>Проблема заключается в следующем:
C>Если вы находитесь не на первой странице листвью, то при поиске листвью не может промотаться в самый вверх, а остается в той же позиции, в которой был. Пробовал несколько вариантов, которые предлагаются в гугле, что-то ничего не помогает. По идее первый элемент я получить могу,вот только
C>C>lvProduct.ScrollIntoView(lvProduct.SelectedItem);
C>
C>на него не делаеться. Может у кого-нить был опыт.
Попробуйте
if (lvProduct.Items.Count > 0)
{
lvProduct.ScrollIntoView(itemsview.Items[0]);
lvProduct.SelectedIndex = 0;
}
Здравствуйте, coresh1988, Вы писали:
C>вот только
C>lvProduct.ScrollIntoView(lvProduct.SelectedItem);
C>на него не делаеться. Может у кого-нить был опыт.
Надо добраться до ScrollView'вера в контроле ListView и сделать ему
ScrollToHome:
var scrollViewer = SearchDownFirstChild<ScrollViewer>(_listView);
if (scrollViewer != null)
{
scrollViewer.ScrollToHome();
}
// А это вспомогательная функция
T SearchDownFirstChild<T>(DependencyObject parent) where T : DependencyObject
{
var childrentCount = VisualTreeHelper.GetChildrenCount(parent);
for (int childIndex = 0; childIndex < childrentCount; childIndex++)
{
var child = VisualTreeHelper.GetChild(parent, childIndex);
if (child is T)
{
return (T)child;
}
else
{
child = SearchDownFirstChild<T>(child);
if (child != null)
{
return (T)child;
}
}
}
return null;
}
Здравствуйте, Fortnum, Вы писали:
F>Надо добраться до ScrollView'вера в контроле ListView и сделать ему ScrollToHome:
F>F>var scrollViewer = SearchDownFirstChild<ScrollViewer>(_listView);
F>if (scrollViewer != null)
F>{
F> scrollViewer.ScrollToHome();
F>}
F>// А это вспомогательная функция
F>T SearchDownFirstChild<T>(DependencyObject parent) where T : DependencyObject
F>{
F> var childrentCount = VisualTreeHelper.GetChildrenCount(parent);
F> for (int childIndex = 0; childIndex < childrentCount; childIndex++)
F> {
F> var child = VisualTreeHelper.GetChild(parent, childIndex);
F> if (child is T)
F> {
F> return (T)child;
F> }
F> else
F> {
F> child = SearchDownFirstChild<T>(child);
F> if (child != null)
F> {
F> return (T)child;
F> }
F> }
F> }
F> return null;
F>}
F>
Гениально! Спасибо большое за помощь, вы очень помогли