Изменение цвета конкретного элемента в Treeview WPF

У меня есть Treeview в моем приложении WPF. На лету, во время выполнения, Если элемент Tree соответствует определенному условию, он должен изменить его Font color от черного до красного.!

XAML

<treeview grid.column="0" grid.row="0" horizontalalignment="Stretch" name="treeView1" verticalalignment="Stretch" selecteditemchanged="treeView1_SelectedItemChanged" horizontalcontentalignment="Stretch" verticalcontentalignment="Top" borderthickness="0,0,0,1" borderbrush="LightGray">
 <treeviewitem header="Head Tree" itemssource="{Binding MainComps}">
 <treeviewitem.itemcontainerstyle>
 
 </treeviewitem.itemcontainerstyle>
 <treeviewitem.resources>
 <hierarchicaldatatemplate datatype="{x:Type TextBlock}" itemssource="{Binding Children}">
 <stackpanel orientation="Horizontal">
 <textblock text="Head Tree">
 </textblock></stackpanel>
 </hierarchicaldatatemplate>
 <hierarchicaldatatemplate datatype="{x:Type local:MainCompViewModel}" itemssource="{Binding Children}">
 <stackpanel orientation="Horizontal">
 <textblock text="{Binding Maincompname}">
 </textblock></stackpanel>
 </hierarchicaldatatemplate>
 <hierarchicaldatatemplate datatype="{x:Type local:FeatureViewModel}" itemssource="{Binding Children}">
 <stackpanel orientation="Horizontal">
 <textblock text="{Binding FeatureName}">
 </textblock></stackpanel>
 </hierarchicaldatatemplate>
 <datatemplate datatype="{x:Type local:CompViewModel}">
 <stackpanel orientation="Horizontal">
 <textblock text="{Binding Component}">
 </textblock></stackpanel>
 </datatemplate> 
 </treeviewitem.resources>
 </treeviewitem>
</treeview>

Code behind

private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
 if(selected Item meets certain condition)
 {
 //Change color of tree node
 }
}
<p>Как я могу изменить цвет конкретного Node и оставить его в том же цвете SO, что и при его расширении. Он должен быть в <code>RED</code>.
Любая помощь будет оценена.</p></object>
3 ответа

Вы можете создать логическое свойство в модели, которое истинно, когда элементы удовлетворяют условию. Затем вы привязываете Foreground следующим образом:

<treeview.itemcontainerstyle>
 
 </treeview.itemcontainerstyle>

или с конвертером:

<treeview.itemcontainerstyle>
 
 </treeview.itemcontainerstyle>


Просто измените Foreground:

TreeViewItem ti = (TreeViewItem)treeView1.SelectedItem;
ti.Foreground = Brushes.Red;


Это встроено в шаблон. Вы можете изменить цвет, скопировав по умолчанию Aero-Style для управления и изменив жестко заданное значение.

Или путем сверления визуального дерева на нагрузке, чтобы изменить его таким образом.

Чтобы получить стиль по умолчанию и tenmplate, пройдите через MSDN

Можно также проверить шаг wise ПРИМЕР отсюда.

licensed under cc by-sa 3.0 with attribution.