| 

.NET C# Java Javascript Exception

1
Hallo Zusammen

Jetzt google ich schon über Stunden um den PastBefehl in einer MVVM-Anwendung zu unterbinden. Leider konne ich kein Beispiel finden.

Ist es übherhaupt möglich bei MVVM den PastBefehl in einer TextBox zu unterbinden.

Für ein Beispiel oder ein Denkanstoss wäre ich dankbar!

Gruss Alex
17.01.2014
Maendler 214 7
2 Antworten
0
Wenn ich dich richtig verstehe, sollte es reichen, die Property IsReadOnly der Textbox auf true zu setzen.
17.01.2014
jsc 289 1 7
Geht nicht, weil mit Readonly die Textengabe auch gleich unterbunden wird.
Gruss Alex
Maendler 17.01.2014
Schau mal hier rein: http://stackoverflow.com/questions/938145/make-wpf-textbox-as-cut-copy-and-paste-restricted
jsc 17.01.2014
Das Beispiel habe ich auch gefunden funktioniert aber nur für WPF-Anwendungen und ist nicht MVVM tauglich
Maendler 17.01.2014
Die nicht-MVVM-Tauglichkeit verstehe ich nicht ganz. Das ist aus meiner Sicht eine View-Aufgabe, für welche es auch legitim ist, dies im Code-Behind zu implementieren. Ich würde ein Control machen, dass von TextBox erbt und die Funktionalität hinzufügt. Dann kannst Du auch ein zusätzliches Property einfügen, um die Funktionalität ein- oder auszuschalten.
Roland Bär 17.01.2014
0
Hallo Zusammen

Ich habe jetzt eine Lösung mit eineer AttachedProperty erarbeitet.

Vielleicht will jemand die Lösung sehen.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace js.WPFbase.Controls
{
public class SuppressPasteExtension
{

public static readonly DependencyProperty IsSuppressPasteProperty = DependencyProperty.RegisterAttached("IsSuppressPaste", typeof(bool),
typeof(SuppressPasteExtension), new UIPropertyMetadata(false, OnIsSupressPastePropertyChanged));

public static void SetIsSuppressPaste(DependencyObject dp, bool value)
{
dp.SetValue(IsSuppressPasteProperty, value);
}

public static bool GetIsSuppressPaste(DependencyObject dp)
{
return Convert.ToBoolean(dp.GetValue(IsSuppressPasteProperty));
}

public static void CanExecuteSuppressPast(object sender, CanExecuteRoutedEventArgs e)
{
if (e.Command == ApplicationCommands.Paste) e.Handled = true;
}

private static void OnIsSupressPastePropertyChanged(DependencyObject dp, DependencyPropertyChangedEventArgs e)
{
var tb = dp as TextBox;
var cmd = new CommandBinding();
cmd.Command = ApplicationCommands.Paste;
cmd.CanExecute += CanExecuteSuppressPast;

tb.CommandBindings.Add(cmd);
}
}
}

// Die impementation sieht folgendermassen aus:

xlmns:ctr = "MyNamespace"
<TextBox ctr:SuppressPasteExtension.IsSuppressPaste="True"/>


Gruss Alex
18.01.2014
Maendler 214 7

Stelle deine .net-Frage jetzt!