2013-09-25 41 views
7

Tôi gặp sự cố khi đọc trường. Tôi đã thử theo nhiều cách khác nhau nhưng vẫn không thể. Tôi muốn đọc giá trị mà người dùng đã chọn 3 giá trị sau.cột hộp tổ hợp dữ liệu wpf

Mã trong XAML

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

Mã trong C#

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

Ý anh là gì bởi "Tôi muốn đọc giá trị mà người dùng chọn 3 giá trị sau."? Và vấn đề của bạn chính xác là gì? – JFTxJ

+0

Đừng làm theo cách này. Trong WPF cố gắng sử dụng bindings, nó cách dễ dàng hơn: http://www.wpftutorial.net/DataGrid.html –

Trả lời

17

Mẫu này có thể giúp bạn trong việc tìm hiểu cách listbox có thể được sử dụng.

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> 

Mã-đằng sau

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

Tôi muốn thay đổi 'myGrid.ItemsSource = Employees;' và 'Gender.ItemsSource = Genders' thành bindings để thay thế. –

+0

Điều đó có phù hợp với bạn không? – RonakThakkar

+0

Có, tôi hiểu cách hoạt động và tôi đã viết phần còn lại của mã. Làm tất cả mọi việc. Cảm ơn bạn và tốt nhất liên quan đến sự giúp đỡ của bạn RonakThakkar. :) – user231605

Các vấn đề liên quan