WPF Combox.FindName () не работает - PullRequest
2 голосов
/ 21 декабря 2009

У меня есть два комбинированных списка. Предметы первого я заполняю в 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 ]

1 голос
/ 21 декабря 2009

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

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

0 голосов
/ 21 декабря 2009

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

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

ComboBoxItem comboItem = ddl_cniProg.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem;
...