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;