2016-11-08 1 views
0

Ich habe eine Listbox und das ist mein Xaml-Code;Wpf Listbox Bindung mit String-Array

 <ListBox x:Name="DepremlerListesi" Margin="0,0,542,14"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Grid Width="332" Background="#4CFFFFFF"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="132*"/> 
         <ColumnDefinition Width="200*"/> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition/> 
         <RowDefinition Height="40"/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 
        <Grid Grid.RowSpan="3" Margin="0,0,12,0" 
          Background="Orange" 
          Width="120" 
          Height="120" 
          HorizontalAlignment="Left"> 
         <TextBlock Text="{Binding XX}" 
            HorizontalAlignment="Center" 
            VerticalAlignment="Center" 
            FontSize="48" Foreground="White"/> 
        </Grid> 
        <TextBlock Grid.Column="1" Grid.ColumnSpan="3" 
           Text="{Binding YY}" 
           FontSize="16" 
           VerticalAlignment="Center"/> 
        <TextBlock Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Text="Başlık" TextWrapping="Wrap"/> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 

     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Padding" Value="0"/> 
       <Setter Property="Margin" Value="6"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 

Es ist ein String-Array in meiner Hand. Ich möchte dieses Array und diese ListBox hinzufügen. Ich habe viel gesucht, konnte aber nicht genug Informationen finden.

Ich versuchte (this Seite) die Antworten auf der folgenden Seite,

 ObservableCollection<string> oList; 
     oList = new ObservableCollection<string>(MyArray); 
     DepremlerListesi.DataContext = oList; 

     Binding binding = new Binding(); 
     DepremlerListesi.SetBinding(ItemsControl.ItemsSourceProperty,binding); 

     (DepremlerListesi.ItemsSource as ObservableCollection<string>).RemoveAt(0); 

aber das Ergebnis (die gelben Felder sind leer);

enter image description here

die Werte es angenommen hat, so sein;

enter image description here

Mit der Liste könnte es vielleicht, aber ich weiß nicht, wie. (this Artikel)

Wenn Sie sich fragen, was ich tun möchte, habe ich eine Arbeit über Erdbeben. Diese Daten sind die Schwere des Erdbebens. Ich bin neugierig auf Lösungsvorschläge. Ich hoffe mein gebrochenes Englisch mit ich habe Beschreibung erzählt. Vielen Dank.

Antwort

0

Der beste Weg ist die Bindung direkt im XAML zu setzen:

Fügen Sie diese in der XAML:

<ListBox ItemsSource="{Binding DepremlerListesi}" Margin="0,0,542,14"> 

Danach:

public MainWindow() 
{ 
    this.DataContext = this; 

    InitializeComponent(); 

    DepremlerListesi = new ObservableCollection<ClassToBind>(); 
    DepremlerListesi.Add(new ClassToBind("test1", "test2")); 
    DepremlerListesi.Add(new ClassToBind("test3", "test4")); 
    DepremlerListesi.Add(new ClassToBind("test5", "test6")); 
    OnPropertyChanged("DepremlerListesi"); 
} 

Und ich schuf die auxiliar Klasse :

public class ClassToBind 
{  
    public string XX {get;set;} 
    public string YY { get; set; }  

    public ClassToBind(string var1, string var2) 
    { 
     XX = var1; 
     YY = var2; 
    } 
} 
0

Was ist XX und YY? Wenn Sie nur ein Zeichenfolgenarray an das Listenfeld binden möchten, setzen Sie die listbox.ItemsSource auf das Array und verwenden Sie einfach "{Binding}", genau so und es wird an das Element selbst gebunden, in diesem Fall ist dies die Zeichenfolge.

+0

nur saple, pub Liz String XX {erhalten; einstellen; } public int YY {erhalten; einstellen; } –