Chcę umożliwić użytkownikowi edytować niektóre dane w DataGrid WPF (z .NET Framework 4.0). Kolumna "Instrumenty" powinna umożliwiać użytkownikowi wybór dostępnego dokumentu z listy statycznej lub napisanie dowolnego tekstu. Moja DataGrid jest powiązana z danymi przy użyciu MVVM. Próbowałem wielu rozwiązań, które znalazłem w Internecie, ale żaden z nich nie działa poprawnie. Oto mój kod:Jak zaimplementować edytowalne DataGridComboBoxColumn w WPF DataGrid
<DataGrid Margin="0,6" ItemsSource="{Binding Path=Orders}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="True">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Instrument" MinWidth="140"
ItemsSource="{x:Static ViewModel.Instruments}" SelectedItemBinding="{Binding Path=SelectedInstrument}">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="IsEditable" Value="True"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
rozwijana-lista jest pokazany poprawnie. Pole można edytować dowolnym tekstem, ale ustawia ono wartość null w Selected Instrument po zamknięciu menu rozwijanego dla dowolnego tekstu. Działa tylko dla wybranego elementu. Próbowałem zmienić na SelectedValueBinding, ale to nie pomaga.
Jak właściwie wdrożyć te wymagania? Czy ktoś może zamieścić tutaj roboczą próbkę?
dodatkowe: zamówienia jest ObservableCollection Zamówienie ma obiekt, jak tytuł String, DateTime zamówiony, strun SelectedInstrument, Instruments jest string []
Solutions: obserwuję sugerować jako obejście od bathineni prac :
<DataGrid Margin="0,6" ItemsSource="{Binding Path=Orders}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="True">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Instrument" MinWidth="140">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=SelectedInstrument, Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox IsEditable="True" Text="{Binding Path=SelectedInstrument}"
ItemsSource="{x:Static ViewModel.Instruments}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
myślę w roztworze należy zastąpić '
Neil
tak, to jest literówka –