Ich habe mehrere Lösungen gefunden, wie RichTextBox mit dragAndDrop-Ereignissen zu verwenden, aber nur wenn ich Methoden in View .cs-Datei platzieren. Ich bin neugierig, ob dies über MVVM möglich ist, indem ich Code in ViewModel einbinde und platziere.C# mvvm Bindungsereignisse auf RichTextBox
So habe ich einfach RichTextBox wo im Versuch, Ereignisse aus der Sicht Modell
<RichTextBox HorizontalAlignment="Left" Height="280" VerticalAlignment="Top" Margin="10,10,10,10"
PreviewDragEnter="{Binding RTBPreviewDragEnter}"
PreviewDragOver="{Binding RTBPreviewDragEnter}"
PreviewDrop="{Binding RTBPreviewDrop}"
>
<FlowDocument>
<Paragraph>
<Run Text="RichTextBox"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
Und Ansichtsmodell zu binden
private Boolean IsFileImage(string fileName)
{
return true;
}
public void RTBPreviewDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files != null && files.Length > 0)
{
Console.WriteLine("preview drop");
e.Handled = true;
}
}
}
public void RTBPreviewDragEnter(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files != null && files.Length > 0 && files.Where(IsFileImage).Any())
{
Console.WriteLine("preview drag enter");
e.Handled = true;
}
}
Und wenn ich versuche, dies zu laufen, wirft es Ausnahme, dass Bindung kann nicht in der Eigenschaft AddPreviewDragEnterHandler vom Typ RichTextBox gesetzt sein und DependencyProperty auf DependencyObject verwenden
Gibt es die Möglichkeit, Ereignisse auf RichTextBox über MVVM ohne Abhängigkeit zu binden? (Ich las irgendwo, dass Abhängigkeit nicht gute Idee mit MVVM ist)
Auch ich fand this Frage hier, die das gleiche ist, aber seine Verwendung von Expression Blend SDK. Ist es ein guter Punkt, es zu benutzen?
Oder welcher Ansatz ist in MVVM gut?
Edit: Diese Frage wurde als dupliace markiert, aber in anderen Frage Autor akzeptieren Lösung über Expression Blend SDK erreicht, aber ich war nur neugierig, ob es ohne getan werden kann.