Member 11091382 Ответов: 1

Datagrid и combobox - MVVM и C#


Здравствуйте, я изучаю шаблон mvvm с помощью c#. У меня проблема!
У меня есть datagrid с ItemSource (класс "Order") и SelectedItem ("SelectedOrder").
С помощью select я заполняю форму информацией, содержащейся в datagrid, но для некоторых значений мне нужно предложить некоторый выбор с помощью combobox.
Выбор combobox не находится в selecteditem.
Как я могу отобразить детализацию выбранной мной статьи данных и предоставить пользователю возможность выбора из списка значений (открыть, закрыть, ...).
Заранее спасибо

Что я уже пробовал:

This is the view
<pre>
<Grid DataContext="{Binding SelectedOrder}">
...
<Label Content="Customer:" FontSize="12" x:Name="lblState" VerticalAlignment="Top" Grid.Row="2" Grid.Column="2"/>
<ComboBox x:Name="cmbState" FontSize="12" FontWeight="Normal" IsEditable="True"  Grid.Row="2" Grid.Column="3" Text="{Binding state,Mode=TwoWay}">
...
</Grid>

<DataGrid ItemsSource="{Binding Order, IsAsync=True}" SelectedItem="{Binding SelectedOrder, Mode=TwoWay}" Grid.Row="3" AutoGenerateColumns="false" CanUserAddRows="False" CanUserSortColumns="True" CanUserResizeRows="False" IsReadOnly="True" SelectionMode="Single" SelectionUnit="FullRow">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Number" Binding="{Binding numOrder}" Width="1*" />


Это классовый порядок

public class Order
    {
        public int id { get; set; }
        public string numOrder { get; set; }
        public string title { get; set; }
        public string state { get; set; }
        public string dateCreation { get; set; }
        public string note { get; set; }
    }

1 Ответов

Рейтинг:
6

Member 11091382

Спасибо за ответ, но на самом деле это не правильный ответ для моей проблемы.
Я постараюсь лучше объяснить это:
У меня есть компонента DataGrid с главным свойство DataContext:

<Grid DataContext="{Binding CommessaDataContext}">
    ...
    <DataGrid ItemsSource="{Binding Orders, IsAsync=True}" SelectedItem="{Binding SelectedOrder, Mode=TwoWay}">
    ...
    </DataGrid>
</Grid>


Когда я выбираю один заказ из datagrid я хотел бы показать его детализацию во вложенной сетке с некоторым текстовым полем и некоторым ComboBox:

<Grid DataContext="{Binding SelectedCommessa}">
    ...
    <TextBox x:Name="selectedOrderNum" Grid.Row="1" Grid.Column="1" FontSize="14" Text="{Binding numOrder,Mode=TwoWay}" />
    ...
    <ComboBox x:Name="SelectedOrderState" Grid.Row="2"  Grid.Column="1" FontSize="12" IsEditable="True" Text="{Binding state,Mode=TwoWay}"  ItemsSource="{Binding orderStatus}"/>
</Grid>


Ссылка на данные из выделения и заполнения текстовых полей работает нормально, но я не могу превентивно заполнить их. комбинированный список с другими значениями и показывать только значение объекта.

В нем можно гнездиться а свойство DataContext или ItemsSource внутри другого свойство DataContext?

Graeme_Grant

Данный ответ все еще применим.

То ComboBox.ItemsSource использует OrderStatus который должно быть коллекция действительных Состояния. Привязка должна быть Относительная ссылка К DataContext где можно найти коллекцию.