내 DataGridComboBoxColumn에 데이터가 표시되지 않습니다. 그것은 비어 있습니다. ComboBox를 채우는 데 문제가 없지만 DataGridComboBoxColumn이 작동하지 않습니다.
.NetFramework 4.6.1DataGridComboBoxColumn이 비어 있습니다.
모델 :
public class Address
{
public string Firstname { get; set; }
public string Lastname { get; set; }
public string Country { get; set; }
}
뷰 모델 :
public class AddressViewModel
{
public AddressViewModel()
{
LoadAdresses();
LoadCountries();
}
public List<Address> AddressList { get; set; }
public List<string> CountryList { get; set; }
private void LoadAdresses()
{
AddressList = new List<Model.Address>();
AddressList.Add(new Model.Address(){ Firstname = "Peter", Lastname = "R.", Country = "A" });
AddressList.Add(new Model.Address(){ Firstname = "Tom", Lastname = "A.", Country = "A" });
AddressList.Add(new Model.Address(){ Firstname = "Sam", Lastname = "F.", Country = "A" });
}
private void LoadCountries()
{
CountryList = new List<string>();
CountryList.Add("A");
CountryList.Add("D");
CountryList.Add("CH");
CountryList.Add("GB");
CountryList.Add("F");
}
}
보기 :
<Window.DataContext>
<vm:AddressViewModel/>
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DataGrid x:Name="AddressDataGrid" Grid.Row="0" ItemsSource="{Binding AddressList}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Firstname" Binding="{Binding Firstname}" />
<DataGridTextColumn Header="Lastname" Binding="{Binding Lastname}" />
<DataGridComboBoxColumn Header="Country"
SelectedItemBinding="{Binding Country}"
ItemsSource="{Binding CountryList}"/>
</DataGrid.Columns>
</DataGrid>
<!--This ComboBox works-->
<ComboBox Grid.Row="1" ItemsSource="{Binding CountryList}"/>
</Grid>
이 동작에 대한 이유는 무엇입니까
?
내 DataGrid는 List
AddressList의 인스턴스에 바인딩됩니다. Address 클래스에는 Country 속성이 있습니다. DataGridComboBoxColumn은이 속성에 바인딩되며 ItemsSource에 List다른 콤보 상자가 작동합니다! – PeRa
나는 당신의 코드를 보았습니다. :) 그리고 왜 DataGridComboBox가 작동하지 않는지 설명하려고했습니다. 올바른 DataContext에 있지 않기 때문입니다. 각 행에는 DataContext와 같은 Address 개체가 있으며 Address 개체에는 CountryList가 없습니다. 그것이 작동하지 않는 이유입니다. DataGrid 외부의 ComboBox에는 다른 DataContext가 있습니다. 내 xaml 코드를 사용해 보셨습니까? –
감사합니다. 귀하의 xaml 작품과 나는 당신의 설명을 이해합니다. 꽤 복잡합니다. 즉, ItemsSource 속성을 사용하려면 StaticResource를 사용해야합니다. – PeRa