2012-01-17 2 views
0

Ниже приведен код на мой взгляд, модель:DataGrid SelectedItem Связывание

private DataRow selectedErrorRow; 
public DataRow SelectedErrorRow 
{ 
    get { return selectedErrorRow; } 
    set { selectedErrorRow = value; base.RaisePropertyChanged("SelectedErrorRow"); } 
} 

Тогда это, на мой взгляд:

<DataGrid SelectedItem="{Binding SelectedErrorRow,Mode=TwoWay}" 

Связывание несколько работ ... Это «получает» значение, когда datagrid нарисован, но он никогда не устанавливает его, когда новое значение выбрано/выделено .... Любые идеи?

Обратите внимание, что источником данных для данных является DataTable.

EDIT: Datagrid находится в PopUp, когда DataGrid получает нарисованной он получит переплетены значение (NULL). Однако, как только я выбрал/выделил строку, он НЕ «установил» что-нибудь. Однако он «установит» привязанное значение null, когда его перерисовывает (всплывающее окно открыто, я выбрал строку, закрою ее и снова открою). Дело в том, что он никогда не устанавливает значение ни в чем, кроме нулевого, и он устанавливает его только в течение времени привязки.

+0

Не могли бы вы показать строку кода/XAML который устанавливает ItemsSource вашей сетки? –

+0

ItemsSource = "{Binding DataRowsWithErrors}" DataRowsWithErrors - это DataTable – user1145927

+0

Выглядит как проблема DataContext. DataRowsWithErrors принадлежит вашему DataContext (вероятно, это свойство MV), у вас есть SelectedErrorRow, расположенный на том же логическом уровне? –

ответ

3

Мне нужно было изменить то, к чему я привязывался. Он должен быть привязан к DataRowView, а не к DataRow.

-1

Попробуйте это:

DataGrid SelectedItem="{Binding Path=SelectedErrorRow,Mode=TwoWay} 

Это должно решить вашу проблему.

+1

-1: По умолчанию это два пути. –

+1

@ DanielHilgarth может быть, но если завтра microsoft изменит значение по умолчанию, этот фрагмент кода по-прежнему работает. – Franck

+2

@Franck: (1) Это не произойдет (2), что не вопрос (3) это не помогает OP –

0

У меня был этот вопрос ранее, и я понял это сам.

Не знаю, в чем проблема, поскольку вы не можете увидеть реальное значение при отладке, но когда данные связывают DataTable с datagrid, сначала вы думаете, что он имеет тип DataTable как источник права? Ну, ты ошибаешься, если считаешь.

На самом деле DataGrid или связывание (я до сих пор не знаю, где это произошло, как я вижу только DataTable на моей стороне) делает бросок/новообращенного из DataTable объекта как DataTable.AsDataView(), чтобы преобразовать его в DataView сам по себе, так что выбранный вещь имеет смысл для меня быть DataRowView.

Я знаю, что это старый вопрос, но это могло бы пролить свет на тех, кто получает здесь, а также посмотреть, чтобы установить значение в качестве источника данных, особенно преобразователи

Смежные вопросы