Comment lier une zone de liste déroulante à l'intérieur de wpf datagrid?
Comment lier (Itemssource et de l'élément sélectionné) d'une zone de liste déroulante à l'intérieur de wpf datagrid? Je suis en utilisant le pattern MVVM.
J'ai essayé
<DataGridTemplateColumn Header="Example 9">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem="{Binding PartId, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
et
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding MyCars}" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="Model" Binding="{Binding Model}"/>
<DataGridTextColumn Header="Registration" Binding="{Binding Registration}"/>
<DataGridTemplateColumn Header="Example 12">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding CarParts, RelativeSource={RelativeSource AncestorType=Window}}" DisplayMemberPath="PartName" SelectedValuePath="PartID" SelectedValue="{Binding PartId, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Selected" Binding="{Binding PartId}"/>
</DataGrid.Columns>
</DataGrid>
Propriétés sont utilisées pour la liaison de données
#region DataGrid List<String> Example
public ObservableCollection<MyCar> MyCars { get; set; }
public List<string> PartIds { get; set; }
#endregion
#region DataGrid List<Class> Example
public List<CarPart> CarParts { get; set; }
#endregion
De référence:
http://code.msdn.microsoft.com/windowsdesktop/Best-ComboBox-Tutorial-5cc27f82
Comment vous mettez-vous le DataContext de la Fenêtre de contrôle?
Dans le fichier de code.
public partial class MainWindow : Fenêtre { MainWindowViewModel vm = new MainWindowViewModel(); public MainWindow() { this.DataContext = vm; InitializeComponent(); } }
c-sharpcorner.com/uploadfile/dpatra/combobox-in-datagrid-in-wpf cela peut aider
Dans le fichier de code.
public partial class MainWindow : Fenêtre { MainWindowViewModel vm = new MainWindowViewModel(); public MainWindow() { this.DataContext = vm; InitializeComponent(); } }
c-sharpcorner.com/uploadfile/dpatra/combobox-in-datagrid-in-wpf cela peut aider
OriginalL'auteur user2330678 | 2013-12-19
Vous devez vous connecter pour publier un commentaire.
J'ai essayé tellement de nombreuses options, mais l'option la plus facile que j'ai trouvé est de générer de l'événement load de cette zone de liste déroulante de la boîte de & Lier avec la liste ou le tableau de données.
par exemple
En Xaml
.cs code
OriginalL'auteur Pranjal Jain
Essayez de faire vos Listes observables collections. Vous devez vous assurer que vos biens sont en parler à votre INTERFACE utilisateur lorsque de nouveaux objets sont ajoutés à votre collection et qu'est ce qu'un
ObservableCollection
fait pour vous.Assurez-vous également que votre
CarPart
etMyCar
classe en œuvreINotifyPropertyChanged
.Si oui ou non c'est votre problème dépend de quand exactement vos propriétés sont définies.
OriginalL'auteur ansible
Juste une supposition car je ne suis pas à mon dev de la station, mais essayez d'utiliser ElementName de référence de la fenêtre par nom et non par rapport à la source...
Quelque chose comme:
et l'ajout d'un Nom="MyWindowName" à la définition de la fenêtre.
OriginalL'auteur NebulaSleuth
Suffit d'Utiliser ce système d'exploitation .cs côté
DataContext = CarParts;
OriginalL'auteur Aashutosh