2016-12-01 8 views
1

Ich versuche, WPF zu lernen, und ich bin mit dem ersten Binding Beispiel fest. Ich möchte den Text in dem Textfeld aus der Eigenschaft anzeigen, die im Code vorhanden ist. Ich habe einige relevante Fragen gesehen und ich habe ihre Antworten versucht, aber leider passt keiner von ihnen zu meinem Bedarf. Außerdem, wenn jemand mir ein paar nette Tutorials erzählen könnte, die von Basic bis Advanced Level gehen. Ich schaue in msdn Tutorials, aber ich finde sie sehr komplex (oder zu viel Text), was die Dinge komplizierter macht.Datenbindung kein Fehler, aber konnte nicht sehen, die binded Ausgabe

MainWindow.xaml.cs

namespace WpfApplication1 
{  
    public partial class MainWindow : Window 
    { 
     public string Name { get; set; } 

     public MainWindow() 
     { 
      Name = "Dummy"; 
      InitializeComponent(); 
      DataContext = this; 


     } 
    } 
} 

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:local="clr-namespace:WpfApplication1" 
      mc:Ignorable="d" 
      Title="MainWindow" Height="350" Width="525"> 
     <Grid> 
      <TextBox Text="{Binding Path=Name}"></TextBox> 
     </Grid> 
    </Window> 

Antwort

1

Das Anwesen Name versteckt die Name Eigenschaft der Basisklasse (und Visual Studio warnt Sie darüber) . Sie legen die neue Eigenschaft fest, während die Bindung in XAML die Basisklasseneigenschaft verwendet.

Wählen Sie eine andere Eigenschaftsname:

public string MyName { get; set; } 

public MainWindow() 
{ 
    MyName = "Dummy"; 
    InitializeComponent(); 
    DataContext = this; 
} 

XAML:

<TextBox Text="{Binding Path=MyName}" /> 
+0

Der nächste Schritt besteht darin, eine Ansichtsmodellklasse zu verwenden, wie in der anderen Antwort gezeigt. – Clemens

+0

Danke es funktioniert !!! Ich werde es akzeptieren – Smallestearth

0

dieses Problem zu lösen, eine neue Klasse erstellen:

public class MainWindowViewModel 
{ 
    public string Name { get; set; } 

    public MainWindowViewModel() 
    { 
     Name = "Dummy"; 
    } 

} 

Und ändern Sie den Code hinter dazu:

public MainWindow() 
    { 
     DataContext = new MainWindowViewModel(); 

     InitializeComponent(); 
    } 

Dann sollte es funktionieren.

Sie können Tutorials in Youtube finden, wenn Sie nach MVVM suchen.

+0

Ja, das funktioniert auch, aber ich könnte nur eine als Antwort markieren und ich habe nicht genug Punkte, um Sie zu wählen. Danke für Ihre Antwort! – Smallestearth

+0

Kein Problem :-) Ich bin froh, dass ich dir helfen konnte – ascholz

Verwandte Themen