Un certain nombre de façons différentes en fait,
Reliure à un ENUM
public enum ChoiseEnum
{
Yes,
No,
Maybe
}
D'abord, vous allez besoin d'un ObjectDataProvider
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="ChoiseEnumDataProvider">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:ChoiseEnum" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
Ensuite, nous pouvons lier un DataGridComboBoxColumn à une propriété appelée Choise comme ceci
<DataGrid Name="c_dataGrid"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Choise"
SelectedItemBinding="{Binding Choise}"
ItemsSource="{Binding Source={StaticResource ChoiseEnumDataProvider}}"/>
</DataGrid.Columns>
</DataGrid>
Seules les valeurs de spectacle à partir d'une liste statique dans la zone de liste déroulante
MISE À JOUR
Ajout de plus de détails
namespace ComboBoxDataGrid
{
public class TestClass
{
static TestClass()
{
ChoiseData = new List<string>();
ChoiseData.Add("Yes");
ChoiseData.Add("No");
ChoiseData.Add("Maybe");
}
public static List<string> ChoiseData
{
get;
set;
}
public TestClass()
{
SelectedChoise = string.Empty;
}
public TestClass(string selectedChoise)
{
SelectedChoise = selectedChoise;
}
public string SelectedChoise
{
get;
set;
}
}
}
public partial class WinWorkers: Window
{
public WinWorkers()
{
InitializeComponent();
TestClasses = new ObservableCollection<TestClass>();
TestClasses.Add(new TestClass("Yes1"));
TestClasses.Add(new TestClass("No"));
TestClasses.Add(new TestClass("Maybe"));
c_dataGrid.ItemsSource = TestClasses;
}
public ObservableCollection<TestClass> TestClasses
{
get;
set;
}
}
<Window x:Class="ComboBoxDataGrid.WinWorkers"
xmlns:local="clr-namespace:ComboBoxDataGrid"
...>
<Window.Resources>
<local:TestClass x:Key="TestClass" />
</Window.Resources>
<Grid>
<DataGrid Name="c_dataGrid"
AutoGenerateColumns="False"
RowHeaderWidth="100">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Choise_StaticList"
SelectedValueBinding="{Binding SelectedChoise}"
ItemsSource="{Binding Source={StaticResource TestClass}, Path=ChoiseData}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
J'ai essayé votre dernière façon, mais en fait aucune liaison est effectuée, Je vois un combobox propre. Ma fenêtre s'appelle WinWorkers. J'ai créé une liste de valeurs dans WinWorkers.cs ajouté getter et setter, comme vous l'avez mentionné. Dans WinWorkers.xaml, j'ai mis DataGridComboBoxColumn et ItemSource paramétré de différentes manières, mais cela ne fonctionne pas. par exemple. ItemsSource = "{Binding Path = ListName}" ne fonctionne pas. Comment puis-je me connecter à la liste «genderList», créée dans la même classe? Merci. –
Mise à jour du deuxième exemple avec plus de détails –