RichTextBoxをdragAndDropイベントで使用する方法は複数ありますが、View .csファイルにメソッドを配置する場合にのみ使用できます。 MVVMを介してこれが可能で、ViewModelにコードをバインドして配置することが可能であれば興味があります。リッチテキストボックスにイベントをバインドするC#mvvm
だから私はイムビューモデル
<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>
とViewModelに
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;
}
}
、私はこれを実行しようとすると、それは ができない結合という例外がスローされますから、イベントをバインドしようとしている簡単なリッチテキストボックスを持っていますRichTextBox型のAddPreviewDragEnterHandlerプロパティで設定し、DependencyObjectでDependencyPropertyを使用する必要があります。
依存関係なしでMVVM経由でRichTextBoxにイベントをバインドする可能性はありますか? (私はどこかでMVVMの依存関係が良いアイデアを読んでいません)
また、ここでも同じですが、使用しているExpression Blend SDKの質問thisが見つかりました。それを使用するのは良い点ですか?
MVVMではどちらのアプローチが良いですか?
編集: この質問にはdupliaceとマークされていましたが、Expression Blend SDKで解決された解決策を受け入れる他の質問がありましたが、それがなくてもそれができるかどうかは不思議でした。