Проблема с Syncfusion GridDataControl и DataContext

мне нужно было добавить простую кнопку в GridDataControl. Заметьте пока сложно.

<syncfusion:GridDataVisibleColumn HeaderText="Open Unit" MappingName="JobNumber">
    <syncfusion:GridDataVisibleColumn.HeaderStyle>
        <syncfusion:GridDataColumnStyle HorizontalAlignment="Center" />
    </syncfusion:GridDataVisibleColumn.HeaderStyle>
    <syncfusion:GridDataVisibleColumn.CellItemTemplate>
        <DataTemplate>                                        
            <Button HorizontalContentAlignment="Stretch" 
                    VerticalContentAlignment="Stretch" 
                    Name="cmdOpenUnit" 
                    Click="cmdOpenUnit_Click" 
                    Content="Open Unit" />   
        </DataTemplate>
    </syncfusion:GridDataVisibleColumn.CellItemTemplate>
</syncfusion:GridDataVisibleColumn>

Теперь я попробовал GridDataUnboundVisibleColumn, но с его помощью я не могу использовать имя сопоставления, поэтому, когда я ищу DataContext, его нет. Поэтому я использовал GridDataUnboundVisibleColumn и установил MappingName="JobNumber" на случайные данные в источнике, чтобы убедиться, что у меня есть DataContext

Событие клика:

private void cmdOpenUnit_Click(object sender, RoutedEventArgs e)
{
    try
    {
        CUnit obj = ((Button)sender).DataContext as CUnit ;
    }
    catch { }
}

У меня есть сетка с ObservableCollection<CProject> в качестве источника данных, тогда, когда вы выбираете один, CProject.UnitList // <-- ObservableCollection<CUnit> становится источником данных текущей сетки, с которой я работаю. Следовательно, каждая строка в сетке - это определенный CUnit.

Проблема в том, что DataContext на ((Button)sender).DataContext - это данные JobNumber в объекте Cunit, но я не могу получить родительское свойство. Я пробовал другой кастинг, но пока ничего не получил. Я использовал этот метод пару раз с успехом, но я впервые делаю это с помощью syncfusion, и файлы справки не содержат ничего об этом.

DataContext полученного мной отправителя имеет тип Syncfusion.Windows.Controls.Grid.GridDataCellBoundWrapper, если это может помочь.


person Franck    schedule 15.11.2013    source источник


Ответы (1)


После того, как вы отправите пару сообщений с помощью Syncfusion, оказывается, что контекст данных фактически не содержит контекст данных, скажем,. вам нужно пара литья и расположение указателя мыши, чтобы узнать это.

person Franck    schedule 25.11.2013