Mam listę niestandardowych obiektów: powiedz Owoce o dwóch właściwościach ciągów Nazwa i kolor. Są na liście.Wiązanie Datagrid WPF do listy problemów
private readonly List<Fruit> fruitList = new List<Fruit>();
Następnie ładuję obiekty owocowe do listy.
Próbuję powiązać tę listę do WPF DataGrid:
C#:
dgFruit.ItemsSource = "{Binding}";
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding Path=fruitList}" >
<toolkit:DataGrid.Columns>
<toolkit:DataGridComboBoxColumn
Header="Name"
SelectedValueBinding="{Binding Path=Name}"
TextBinding="{Binding Path=Name}" Width="5*" />
<toolkit:DataGridComboBoxColumn
Header="Color"
SelectedValueBinding="{Binding Path=Color}"
TextBinding="{Binding Path=Color}" Width="5*" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
Powód są w combobox, ponieważ chcę aby użytkownik w stanie zmienić związek. To nie jest prawdziwy przykład, ale masz pomysł. Powiedzmy dla przykładu, że owoc nie był dojrzały, więc zmieniają kolor bananowy na zielony :)
Nie mam żadnego szczęścia, dostając te przedmioty w datagrid ... i na dół utworu, chcę kliknij element w datagridcell zmienić na combobox i pokazać wszystkie możliwe typy nazw owoców i kolorów (dzięki czemu mogą one zmienić relacje)
Oto błąd dostaję:
System.Windows.Data Error: 39 : BindingExpression path error: 'Color' property not found on 'object' ''Char' (HashCode=6750311)'. BindingExpression:Path=Color; DataItem='Char' (HashCode=6750311); target element is 'TextBlockComboBox' (Name=''); target property is 'Text' (type 'String')
Can ktoś pomoże? Powodem, dla którego ustawiam moje kolumny w xaml, mogę ustawić szerokość na rozmiar gwiazdy i kolumny mają taką samą szerokość.
Widzę większość przykładów użycia ObservableCollection, ale jeśli mogę powiązać listę, dlaczego muszę tego użyć?
Proszę pozwolić mi knwo jeśli mój przykład wymaga dalszych wyjaśnień
Edycja: co mam teraz:
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding}"
AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn
Header="Name"
Width="5*"/>
<toolkit:DataGridComboBoxColumn
Header="Color"
Width="5*"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
C#:
DataContext = fruitList;
Właściwie kiedy używam DataContext, nie otrzymuję ite ms. Kiedy używam ItemSource, otrzymuję puste wiersze, ale poprawną liczbę wierszy, więc wydaje się bardziej wzdłuż właściwych linii.
Mogę uzyskać dane do wyświetlenia, jeśli pozwolę na automatyczne generowanie kolumn. Jeśli ustawię autogeneratecolumns na false, a następnie określ moje kolumny w xaml, tak jak chcę użyć rozmiaru gwiazdy, otrzymam odpowiednią liczbę kolumn, ale bez tekstu!
to owrks, ale kiedy to zrobię, kolumny zdefiniowane w Xaml są ignorowane i dodaje nowe po lewej. Czy mogę programowo ustawić rozmiary gwiazd dla tych kolumn generowanych automatycznie? – baron
Możesz wyłączyć te generowane automatycznie. Na karcie DataGrid w XAML: AutoGenerateColumns = "Fałsz" – lesscode
coraz bliżej, teraz żadnych elementów pokaż :(zobacz ostatnią edycję – baron