WPF Combox.FindName() не работает

У меня есть два комбо-бокса. Предметы первого я заполняю в Xaml:

<ComboBox Name="ddl_pageType" Width="200" BorderThickness="5">
                <ComboBoxItem Name="Website" Content="Webseite"/>
                <ComboBoxItem Name="CNIProg" Content="Seite"/>
</ComboBox>

и функция ddl_pageType.FindName("Веб-сайт"); работает.

Второй комбобокс я заполняю:

 ddl_cniProg.SetBinding(TextBlock.TextProperty, new Binding());
 ddl_cniProg.ItemsSource = progList;

где proglist - это список. Здесь функция ddl_cniProg.FindName(string) не работает.

Что мне нужно сделать, чтобы получить предмет из dd_cniprog?

2 ответа

Решение

FrameworkElement.FindName ищет дочерние элементы через Name приписывать. ( http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx) Если только для ComboBoxItems, которые вы генерируете из списка привязки данных, не установлен атрибут Name (на что он не похож из небольшого фрагмента кода), то функция не найдет их.

Чтобы найти элемент, который вы ищете, чтобы использовать FindNameвам нужно будет установить Name атрибут для каждого элемента, либо через привязку данных, либо программно.

Поскольку вы не указываете имя для элементов в базе данных ComboBox, вы не можете использовать FindName...

Если вы хотите получить ComboBoxItem для конкретного элемента данных вы можете использовать ItemContainerGenerator:

ComboBoxItem comboItem = ddl_cniProg.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem;
Другие вопросы по тегам