Добавление нового настраиваемого свойства к элементу WPFC#

Место общения программистов C#
Anonymous
Добавление нового настраиваемого свойства к элементу WPF

Сообщение Anonymous »

Подобно тому, как заголовок является свойством TreeViewItem, я пытаюсь добавить еще одно свойство, на которое я могу ссылаться в своем коде.
Я начал изучать DependencyProperty, но у меня есть ощущение, что это неправильное направление, а также создание простого расширения, чтобы попытаться установить свойство, которое я ищу.
Небольшой фрагмент, который я пытаюсь заставить работать, выглядит примерно так:

Код: Выделить всё

public bool AddNewTreeviewChild(ItemCollection selectedTreeView, TreeViewItem selectedItem)
{
if (selectedTreeView.Contains(selectedItem))
{
var newChild = new TreeViewItemExtension();
newChild.Header = NewItem.Text;
newChild.TreeViewType = DesignateChildType();
selectedItem.Items.Add(newChild);
}

foreach (TreeViewItem item in selectedTreeView)
{
if (AddNewTreeviewChild(item.Items, selectedItem))
{
return true;
}
}

return false;
}
Свойство зависимости, которое я пробовал:

Код: Выделить всё

public static readonly DependencyProperty TreeViewTypeProp =
DependencyProperty.Register(
"TreeViewType",
typeof(string),
typeof(TreeViewItem),
new PropertyMetadata("Root")
);

public string TreeViewType
{
get { return (string)GetValue(TreeViewTypeProp); }
set { SetValue(TreeViewTypeProp, value); }
}
Однако это по-прежнему делает TreeViewType недоступным или неработоспособным в приведенном выше примере, поэтому он не компилируется и не запускается.
Я также пытался сделать расширение с помощью просто:

Код: Выделить всё

   public class TreeViewItemExtension : TreeViewItem
{
public string TreeViewType { get; set; }

public TreeViewItemExtension ()
{

}
}
Но при просмотре вновь добавленных элементов TreeViewType отсутствует. Я пробовал приводить и переименовывать различные TreeViewItems в TreeViewItemExtension, но безуспешно. Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/790 ... pf-element

Вернуться в «C#»