я просто программно создаю GridControl из devexpress и всех ячеек и привязываю его ItemsSource таким образом
var gridControlAzmayesh = new GridControl
{
View = tv,
ItemsSource = new CollectionViewSource
{
Source = list// include some column : id,name,last name
}.View
};
теперь я хочу поместить кнопку в столбец и привязать ее по идентификатору, а при нажатии кнопки открыть пользовательский элемент управления с соответствующим идентификатором строки, но он не работает, мой код:
var template = new DataTemplate();
var buttonFactory = new FrameworkElementFactory(typeof(Button)) ;
buttonFactory.SetValue(Button.ContentProperty,"....");
buttonFactory.SetBinding(Button.TagProperty, //????????add id to tag
new Binding()
{
XPath = "Id", // ????????not binding work
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});
buttonFactory.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler((sender, args) =>
{
var aa = ((Button)sender).Tag; // ????????read tag
var uc = new UcEditAzmayeshSabeghe((int) aa); // ???????? initialize a user control to open whit row id
UcPopupSabeghe.Child = uc;
UcPopupSabeghe.Placement = PlacementMode.Mouse;
UcPopupSabeghe.StaysOpen = false;
UcPopupSabeghe.AllowsTransparency = true;
UcPopupSabeghe.IsOpen = true;
}));
template.VisualTree = buttonFactory;
gridControlAzmayesh.Columns.Add(new GridColumn
{
FieldName = "Id",
Header = "...",
CellTemplate = template,
Width = new GridColumnWidth(40, GridColumnUnitType.Pixel)
});
gridControlAzmayesh.View = new TableView() { UseLightweightTemplates = UseLightweightTemplates.Row };
я не могу создать свой gridControl в XAML, потому что я создаю много gridControl с разными столбцами на разных вкладках: почему вы так боитесь XAML, я знаю, но XAML недостаточно гибок: ооочень много!
именно «id», не привязываясь к кнопке, я хочу получить идентификатор каждой строки и привязать его к свойствам тега кнопки.
GridView
? Подробнее, пожалуйста. Ваша проблема должна быть воспроизводимой. По крайней мере понятно для тех, кто не знает деталей вашего проекта или задачи. - person BionicCode   schedule 28.12.2019Binding.Path
вместоBinding.XPath
. Смотрите мой ответ для рекомендуемого чистого и простого решения. Никогда не создавайтеDataTemplate
с помощью C#. Это самоубийственный стиль программирования. - person BionicCode   schedule 28.12.2019FrameworkElementFactory
. Все это скрыто от пользователя. - person BionicCode   schedule 28.12.2019DataTemplate
по сравнению с вашей версией C#. - person BionicCode   schedule 28.12.2019