0

ListBoxの見解では、動的に成長しているコレクションにバインドされています。最後に追加された項目 (リストの一番下に追加されます) の後にスクロール位置を配置したいと思います。Caliburn.Microでこれを達成するにはどうすればよいですか?

4

3 に答える 3

1

GetView()を使用して、ビューモデルでビューを参照できます。これにより、ビューとビューモデルも結合されます。

var myView = GetView() as MyView;
myView.MyListBox.DoStuff

別のオプションは、動作を作成することです。 これは、ビヘイビアーを使用しTreeViewてビューモデルからを展開する方法の例です。同じことがに適用できますListBox

于 2013-03-07T22:02:34.450 に答える
1

実際には、上記のいずれも使用せずに、これを達成するためのより簡単な方法があります。

リストボックスを次のように拡張するだけです:

namespace Extensions.Examples {
    public class ScrollingListBox : ListBox
        {
            protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
            {
                if (e.NewItems != null)
                {
                    int newItemCount = e.NewItems.Count;
                    if (newItemCount > 0)
                        this.ScrollIntoView(e.NewItems[newItemCount - 1]);

                    base.OnItemsChanged(e);
                }
            }
        }
}

次に Xaml で、拡張クラスの Location を次のように宣言します。

xmlns:Extensions="clr-namespace:Extensions.Examples"

そして、リストボックスを作成するときは、使用する代わりに

<Listbox></Listbox>

拡張クラスを使用するだけです

<Extensions:ScrollingListBox></Extensions:ScrollingListBox>
于 2014-03-07T12:27:49.083 に答える