Я у нас есть сетка данных с некоторыми определенными столбцами, а затем шаблон сведений о строке. Как получить доступ к элементу управления в шаблоне сведений о строке в коде позади? У меня есть кнопка, которую я хочу программно включить / отключить, но я не могу понять, как получить к ней доступ в приведенном ниже коде. Я видел это в MSDN:
http://msdn.microsoft.com/en-us/library/bb613579.aspx
, но это просто описание обычного шаблона данных, поэтому, когда я попытался, это не не работает Мой случай - это шаблон данных строки. Конечно, кто-то написал код для доступа к элементу управления в шаблоне сведений о строке таблицы данных, который может комментировать это (будет очень признателен).
Хорошо, я понял, как заставить эту работу работать. Мне пришлось подправить код, опубликованный в той статье MSDN в исходном вопросе ....
DataGridRow row = (DataGridRow)(KeywordsGrid.ItemContainerGenerator.ContainerFromItem(KeywordsGrid.SelectedItem));
// Getting the ContentPresenter of the row details
DataGridDetailsPresenter presenter = FindVisualChild<DataGridDetailsPresenter>(row);
// Finding Remove button from the DataTemplate that is set on that ContentPresenter
DataTemplate template = presenter.ContentTemplate;
Button button = (Button)template.FindName("RemoveItemButton", presenter);
"KeywordsGrid" - это переменная привязан к моей сетке данных. Обратите внимание, что в моем вызове FindVisualChild я использую класс DataGridDetailsPresenter вместо ContentPresenter (это был ключ ... он заставлял метод FindVisualChild перебирать все презентаторы контента, пока я не добрался до одного для деталей строки).
Можете ли вы определить (или уже существует) свойство для типа объекта, отображаемого в сетке, которое представляет включенное состояние кнопки? Если да, то было бы намного проще изменить шаблон сведений о строке, чтобы привязать свойство IsEnabled кнопки к этому свойству.