2013-09-25 3 views
7

У меня проблемы с чтением поля. Я пробовал по-разному, но до сих пор не могу. Я хочу прочитать значение, которое пользователь выбрал следующие 3 значения.wpf datagrid combobox column

код в XAML

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

код в C#

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

Что ты имеешь в виду: «Я хочу, чтобы прочитать значение, которое пользователь выбрал следующие 3 значения.»? И какова ваша проблема? – JFTxJ

+0

Не делайте этого так. В WPF попытайтесь использовать привязки, это проще: http://www.wpftutorial.net/DataGrid.html –

ответ

17

Этот пример может помочь вам понять, как можно использовать ListBox.

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-за

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

Вместо этого я заменил бы «myGrid.ItemsSource = Сотрудники» и «Gender.ItemsSource = Genders» на привязки. –

+0

Это работало для вас? – RonakThakkar

+0

Да, я понимаю, как это работает, и я написал остальную часть кода. Все работает. Спасибо и с наилучшими пожеланиями за вашу помощь РонакТаккар. :) – user231605