столбец таблицы данных не обновляется - PullRequest
1 голос
/ 14 декабря 2011

У меня есть форма WPF с DataGrid. Этот DG содержит DataGridTemplateColumn, который содержит ComboBox. Когда я щелкаю по новой строке DG и выбираю значение из комбинированного списка, а затем вкладываюсь в следующий столбец, выбранное значение не остается видимым в столбце комбинированного списка.

Однако, когда я вернусь назад, правильное значение отобразится в поле со списком.

Как сохранить выбранное значение, отображаемое в столбце комбинированного списка, когда я вкладываю его в столбец?

Вот мой столбец comboxbox xaml:

<DataGridTemplateColumn Header="Type" Width="160">
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding LocationType.Description, Mode=TwoWay}"/>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <ComboBox Name="cboAddrtype"
                      ItemTemplate="{StaticResource dtAddrType}" IsSynchronizedWithCurrentItem="True"
                      ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=1}, Path=DataContext.LocationTypesObject, Mode=OneTime}"
                      SelectedItem="{Binding Path=SelectedLocationType, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
                      SelectedValue="{Binding Path=LocationTypeKey, Mode=TwoWay}"
                      SelectedValuePath="InternalKey"
                      Width="100" />

        </StackPanel>

    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

1 Ответ

1 голос
/ 14 декабря 2011

В CellTemplate вы связываете LocationType.Description, а в CellEditingTemplate вы связываете SelectedLocationType и LocationTypeKey.Я не уверен, что ваша привязка из ComboBox не повлияет каким-либо образом на LocationType.Description.

. Более того, SelectedLocationType и LocationTypeKey не находятся в контексте DataTemplate.Вы должны добавить свойство привязки Source, чтобы получить вашу ViewModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...