2013-09-25 13 views
7

Mam problem z odczytaniem pola. Próbowałem na różne sposoby, ale nadal nie mogę. Chcę odczytać wartość, że użytkownik wybrał następujące 3 wartości.wpf datagrid combobox kolumna

kod w XAML

<DataGridComboBoxColumn X:Name="dgcbc" Header="Wynik"/> 

kodu w języku C#

List<string> list = new List <string>(); 
lista.Add ("Prize"); 
lista.Add ("Draw"); 
lista.Add ("Lost"); 
dgcbc.ItemsSource = list; 
+0

Co masz na myśli mówiąc: „Chcę, aby odczytać wartość, że użytkownik wybrał następujące 3 wartości.”? I jaki jest dokładnie twój problem? – JFTxJ

+0

Nie rób tego w ten sposób. W WPF spróbuj użyć wiązań, to jest o wiele łatwiejsze: http://www.wpftutorial.net/DataGrid.html –

Odpowiedz

17

Próbka ta może pomóc w zrozumieniu, jak listbox może być używany.

public class Employee 
{ 
    public string Name { get; set; } 
    public string Gender { get; set; }   
} 

XAML

<StackPanel> 
    <DataGrid AutoGenerateColumns="False" Name="myGrid" Margin="10"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=Name}" />    
     <DataGridComboBoxColumn Width="100" x:Name="Gender" 
        SelectedValueBinding="{Binding Gender, Mode=TwoWay}" 
        DisplayMemberPath="{Binding Gender}" /> 
    </DataGrid.Columns> 
    </DataGrid> 
    <Button Name="ShowPersonDetails" 
      Content="Show Person Details" 
      Width="200" Height="30" 
      Click="ShowPersonDetails_Click" Margin="10" /> 
</StackPanel> 

Code-za

public partial class WPFDataGridComboBox : Window 
{ 
    public List<Employee> Employees { get; set; } 
    public List<string> Genders { get; set; } 

    public WPFDataGridComboBox() 
    { 
     Employees = new List<Employee>() 
     { 
      new Employee() { Name = "ABC", Gender = "Female" }, 
      new Employee() { Name = "XYZ" } 
     }; 

     Genders = new List<string>(); 
     Genders.Add("Male"); 
     Genders.Add("Female"); 

     InitializeComponent(); 
     myGrid.ItemsSource = Employees; 
     Gender.ItemsSource = Genders; 
    } 

    private void ShowPersonDetails_Click(object sender, RoutedEventArgs e) 
    { 
     foreach (Employee employee in Employees) 
     { 
      string text = string.Empty; 
      text = "Name : " + employee.Name + Environment.NewLine; 
      text += "Gender : " + employee.Gender + Environment.NewLine; 
      MessageBox.Show(text); 
     } 
    } 
} 
+2

Zamiast tego zmienilbym 'myGrid.ItemsSource = Employees;' i 'Gender.ItemsSource = Genders' na wiązania. –

+0

Czy to była praca dla Ciebie? – RonakThakkar

+0

Tak, rozumiem, jak to działa, a ja napisałem resztę kodu. Wszystko działa poprawnie. Dziękuję i pozdrawiam za pomoc RonakThakkar. :) – user231605