Laden...

Wie den Inhalt einer Textbox in Zwischenablage kopieren?

Erstellt von habib vor 3 Jahren Letzter Beitrag vor 3 Jahren 850 Views
H
habib Themenstarter:in
24 Beiträge seit 2020
vor 3 Jahren
Wie den Inhalt einer Textbox in Zwischenablage kopieren?

Auf Anraten erstelle ich ein neues Thema.
Ich möchte bei 7 Textboxen den Inhalt bei Klick darauf in die Zwischenablage kopieren.
Dafür habe ich nun alle Textboxen mit Hyperlink verschachtel, die jetzt alle so aussehen.


<TextBlock Focusable="True">
      <Hyperlink Focusable="True" Command="ApplicationCommands.Copy" >
              <TextBlock Name="tb_teamViewerID" Focusable="True" />
      </Hyperlink>
</TextBlock>

Ich weiß, dass ich noch einen Denkfehler habe, allerdings komme ich nicht darauf wo dieser liegt.

2.079 Beiträge seit 2012
vor 3 Jahren

"ApplicationCommands" sind keine Commands mit Funktionalität in dem Sinne.
Es sind stattdessen global zugänglicher Command-Properties, die aber noch Funktionalität benötigen.
Der Sinn ist, dass Du irgendwo (z.B. am Window) dem Close-Command eine Funktionalität zuweisen und danach überall nutzen kannst.

Am besten Du schreibst einen eigenen Command, der den CommandParameter in die Zwischenablage schreibt. Das kann man genauso static machen, dann kannst Du das ganz ohne ApplicationCommands.Copy nutzen.

public class MyCommands
{
    public static CopyCommand Copy { get; } = new CopyCommand();
}

public class CopyCommand : ICommand
{
    public void Execute(object parameter)
    {
        // "parameter" kopieren
    }
}
<Hyperlink Command="{x:Static local:MyCommands.Copy}" CommandParameter="{Binding Text, ElementName=tb_teamViewerID}">

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

H
habib Themenstarter:in
24 Beiträge seit 2020
vor 3 Jahren

Danke, damit hat es nun funktioniert.

Allerdings steige ich noch nicht genau durch, wie und was. Könntest du mir bitte ein Tutorial empfehlen welches sich mit dieser speziellen Thematik beschäftigt?

2.079 Beiträge seit 2012
vor 3 Jahren

Ich kenne kein Tutorial dazu, nur das, was man (unter anderem auch von Microsoft) findet, wenn man Google (oder eine Suchmaschine deiner Wahl) benutzt.
Ich habe einfach ganz naiv nach "wpf ApplicationCommands.Copy" gesucht und mehr als genug Informationen gefunden.

Ansonsten lies ein gutes Buch zu WPF oder C# allgemein, da ist eventuell WPF auch mit dabei.
Z.B. das ist ziemlich gut und befasst sich auch mit WPF: http://openbook.rheinwerk-verlag.de/visual_csharp_2012/
Davon gibt's auch eine neuere aber kostenpflichtige Version.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

H
habib Themenstarter:in
24 Beiträge seit 2020
vor 3 Jahren

Werde mich mal weiter belesen.

Eine Frage hätte ich noch. Der Text wird ja nun in die Zwischenablage kopiert, zeitgleich sollte nun in der Statuszeile ein "kopiert" erscheinen.

Kann ich das in der Execute Methode mitgeben? Also das ich in der MainWindow.cs Datei eine Methode erstelle:

 

private void OutputStatus() 
      {

            statusbar.text = "kopiert";     
        }



Und dann im Execute aufrufen? Oder gibt es hierfür auch einen anderen Weg in WPF?

5.658 Beiträge seit 2006
vor 3 Jahren

Was du brauchst, ist ein ViewModel, das den aktuellen Status deiner Benutzeroberfläche repräsentiert. Dort gibt es dann eine Eigenschaft mit dem Status-Text, den du an deine StatusBar binden kannst.

Siehe [Artikel] MVVM und DataBinding

Weeks of programming can save you hours of planning