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