Как отключить WPF ListViewItem в коде C #? - PullRequest
1 голос
/ 11 июля 2009

Я привык к старому образу действий Winforms. По-видимому, WPF ListViews полны ... XmlElements? Как бы я сделал что-то вроде отключения ListViewItem?

foreach (XmlElement item in this.lvwSourceFiles.Items)
{
   //disable?

}

Ответы [ 3 ]

2 голосов
/ 11 июля 2009

ListView является ItemsControl. ItemsControl.Items не возвращает дочерние элементы управления - он возвращает элементы , то есть объекты, добавленные в ListView, либо напрямую, либо через привязку данных. Я предполагаю, что в этом случае вы связали свой ListView с каким-то XML, верно?

ListViewItem (и другие подобные ему классы - например, ListBoxItem для ListBox) называется «контейнером предмета». Чтобы получить контейнер предмета для данного предмета, вы должны сделать это:

ListView lv;
...
foreach (object item in lv.Items)
{
   ListViewItem lvi = (ListViewItem)lv.ItemContainerGenerator.ContainerFromItem(item);
}
0 голосов
/ 05 января 2010

Вы можете выполнить это в XAML легко

0 голосов
/ 11 июля 2009

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

foreach (object item in this.lvwSourceFiles.Items)
{
    UIElement ui = lvwSourceFiles.ItemContainerGenerator.ContainerFromItem(item) as UIElement;
    if (ui != null)
        ui.IsEnabled = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...