私はリストビューを持っています。 MVVMパターンを実装しました。WPF MVVM:ビューモデルからリストビューオブジェクトにアクセスする
今、ビューでは、私は以下のようにリストビューのためのItemContainerStyleを定義します。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="lstItemContact_MouseDown" />
<EventSetter Event="PreviewMouseMove" Handler="lstItemContact_MouseMove" />
</Style>
</ListView.ItemContainerStyle>
と背後にあるコードで
( xaml.cs)私は、例えば、イベントの下に持っている、のPreviewMouseLeftButtonDown:private void lstItemContact_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
// Get the current mouse position
Point mousePos = e.GetPosition(null);
Vector diff = _startPoint - mousePos;
if (
Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
{
if (e.Source != null)
{
List<DataModel> myList = new List<DataModel>();
foreach (DataModel Item in lvUsers.SelectedItems)
{
myList.Add(Item);
}
DataObject dataObject = new DataObject(myList);
DragDrop.DoDragDrop(lvUsers, dataObject, DragDropEffects.Move);
}
}
}
}
lstItemContact_MouseMove
イベントは、実装されたドラッグアンドドロップ機能の一部です。
lvUsersは、DataModelを想定しているビューとデータモデルのリストビューです。
これは正常に動作していますが、今度は "lstItemContact_MouseMove"イベントをビューからビューモデルに移動してICommandを使用したいと思います(ICommandにlistviewオブジェクトを渡すことは可能かもしれませんが、 )。私の問題は、私は関数にパラメータとしてリストビューを渡すためにビューモデルからの私のリストビュー(lvUsers)へのアクセスを取得する方法がわからないということです:「lstItemContact_MouseMove」イベント内
DragDrop.DoDragDrop(lvUsers, dataObject, DragDropEffects.Move);
。
どうすればいいですか?
でそれについてまで読むことができますか? – mm8
@ mm8まあ、私はMVVM wpfで非常に新しいです。ビューとデータモデルの間の依存関係を正しく設定するかどうかわからないためです。それは良い習慣ですか?それはMVVMの原則を尊重しますか? – user1624552