C#とXAMLを使用して、Windows8用のある種のチャットアプリケーションを作成します。
チャットリストには、ObservableCollectionにバインドされたListViewを使用しています。カスタムコントロールを使用しているメッセージアイテムの場合、RichTextBlockが含まれています。
ListViewを一番下までスクロールして、新しいメッセージを表示したいと思います。私が直面した問題: ScrollIntoViewメソッドは、メッセージアイテム全体を表示せず、メッセージアイテムの上部のみを表示します。
そこで、WinRT XAML Toolkitのソリューションも試しました。ListViewのScrollViewerを取得し、ScrollViewerのメソッドを使用します。
public static void ScrollToBottom(this ListView listView)
{
var scrollViewer = listView.GetFirstDescendantOfType<ScrollViewer>();
scrollViewer.ScrollToVerticalOffset(scrollViewer.ScrollableHeight);
}
と
public static void ScrollToBottom(this ListView listView)
{
var scrollViewer = listView.GetFirstDescendantOfType<ScrollViewer>();
scrollViewer.ScrollToVerticalOffset(scrollViewer.ExtentHeight);
}
同じ効果で。一部のメッセージ項目が完全にスクロールされていません。
また、スクロールする前に遅延を作成しようとしました:new ManualResetEvent(false).WaitOne(2000);
自動スクロール可能なチャットリストを作成する方法については、これ以上アイデアがありません。どうすればこれを行うことができますか?
どのWindowsメッセージングアプリケーションがListView(StackPanel ??)を使用していないようです。
これにはStackPanelを使用する方が簡単かもしれません。