мне нужно было добавить простую кнопку в 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
, если это может помочь.