2013-09-25 2 views
7

필드를 읽는 데 문제가 있습니다. 나는 다른 방법으로 시도했지만 여전히 할 수 없습니다. 사용자가 다음 3 가지 값을 선택한 값을 읽고 싶습니다. C#에서 XAMLwpf DataGrid 콤보 상자 열

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

코드에

코드

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

당신은 "나는 사용자가 다음과 같은 세 값을 선택하는 값을 읽고 싶어."무엇을 의미합니까? 그리고 당신의 문제는 정확히 무엇입니까? – JFTxJ

+0

이렇게하지 마십시오. WPF에서 바인딩을 사용하려고 시도하는 것이 더 쉽습니다. http://www.wpftutorial.net/DataGrid.html –

답변

17

이 샘플은 목록 상자의 사용 방법을 이해하는 데 도움이 있습니다.

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> 

코드 숨김

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 = Employees;'및 'Gender.ItemsSource = Gender'를 바인딩으로 변경했습니다. –

+0

그게 효과가 있었나요? – RonakThakkar

+0

예, 어떻게 작동하는지 이해하고 나머지 코드를 작성했습니다. 모든 것이 작동합니다. RonakThakkar 귀하의 도움에 감사드립니다. :) – user231605