2017-03-27 1 views
1

Ich kann die Variable aus dem Code hinter in meinem Wpf RadioButton- bindenWPF: Wie man Daten von einem Code hinter Variable Inhalt in XAML binden

Kann mir jemand helfen, von der in den Inhalt der Werte aus den Variablen angezeigt werden Radio knopf.

MainWindow.xaml:

  <RadioButton GroupName="Preis" Grid.Row="10" Content="{Binding Name1}" FlowDirection="RightToLeft" HorizontalAlignment="Left"/> 
      <RadioButton GroupName="Preis" Grid.Row="11" Content="{Binding Name2}" FlowDirection="RightToLeft" HorizontalAlignment="Left"/> 
      <RadioButton GroupName="Preis" Grid.Row="12" Content="{Binding Name3}" FlowDirection="RightToLeft" HorizontalAlignment="Left"/> 
      <RadioButton GroupName="Preis" Grid.Row="13" Content="{Binding Name4}" FlowDirection="RightToLeft" HorizontalAlignment="Left"/> 
      <RadioButton GroupName="Preis" Grid.Row="14" Content="{Binding Name5}" FlowDirection="RightToLeft" HorizontalAlignment="Left"/> 

MainWindow.xaml.cs

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     Produkte produkte = new Produkte(); 
     produkte.Name1 = "Handstaubsauger"; 
     produkte.Name2 = "Fensterwascher"; 
     produkte.Name3 = "Dampfreiniger"; 
     produkte.Name4 = "Hochdruckreiniger"; 
     produkte.Name5 = "Geschenkgutschein"; 

     // Regex für Email 
     String regexEmail = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$"; 

     // Hier weitermachen 

    } 

} 

Produkte.cs

public class Produkte 
{ 
    public String Name1 { get; set; } 
    public String Name2 { get; set; } 
    public String Name3 { get; set; } 
    public String Name4 { get; set; } 
    public String Name5 { get; set; } 
    public Int16 Stimmen1; 
    public Int16 Stimmen2; 
    public Int16 Stimmen3; 
    public Int16 Stimmen4; 
    public Int16 Stimmen5; 
} 

Antwort

-2

In XAML im Fenster oben auf die Registerkarte, würden Sie müssen Sie Ihre DataContext definieren. Wenn es Ihr Code dahinter ist, wäre Self. Sobald Sie die DataContext festgelegt haben, können Sie auf öffentliche Eigenschaften für die Bindung zugreifen.

<Window x:Class="Account.Client.PotentialMisallocation.Controls.DisplayAndFilter" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     DataContext="{Binding RelativeSource={RelativeSource Self}}"> 

Sie benötigen eine öffentliche Eigenschaft des Typs Artikel in Ihrem Code hinter aussetzen:

public Product Product 
    { 
     get { return new Product() {Id = 1, Name = "James"}; } 
    } 

Dann in XAML, würden Sie STH wie tun:

<Label x:Name="label" Content="{Binding Product.Id}" /> 
<Label x:Name="label1" Content="{Binding Product.Name}" /> 
+0

Wie muss ich den Inhalt in der XAML anpassen? Es zeigt immer noch nicht den Text. –

+0

Habe ich dir etwas falsches vorgeschlagen? Downvoter, könntest du bitte einen Kommentar abgeben? – NoSaidTheCompiler

+1

Warum sagen Sie ihm, dass er DataContext auf sich selbst setzen soll? Das ist völlig unnötig und es wird eine furchtbar schlechte Angewohnheit. Sie tun es mit UserControls und es verursacht kein Ende der Frustration. Weisen Sie dem DataContext das * Viewmodel * zu. Dafür ist der DataContext gedacht. Ich würde mit einem hohen Maß an Vertrauen erraten, dass das hinter dem DV war. –

0
public MainWindow() 
{ 
    InitializeComponent(); 

    Produkte produkte = new Produkte(); 
    produkte.Name1 = "Handstaubsauger"; 
    produkte.Name2 = "Fensterwascher"; 
    produkte.Name3 = "Dampfreiniger"; 
    produkte.Name4 = "Hochdruckreiniger"; 
    produkte.Name5 = "Geschenkgutschein"; 


    // ADD THIS 
    DataContext = produkte; 


    // Regex für Email 
    String regexEmail = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$"; 

    // Hier weitermachen 
} 

Beachten Sie, dass es fehlschlägt, wenn Sie versuchen, an Stimmen1, Stimmen2, etc. zu binden, weil sie dies tun ds. Sie müssen { get; } haben, um an sie binden zu können.

Sie müssen wirklich Produkte in ein richtiges Viewmodel mit INotifyPropertyChanged etc. verwandeln, aber dies wird eine schreibgeschützte Ansicht erhalten, die gerade funktioniert.