我有一個TreeView
包含很多項目,顯然排列在樹形結構中。我試圖以正常字體以粗體和其所有子節點打印父節點。然而,當我這樣做時:樣式更改應用於TreeView節點的所有子節點
TreeViewItem item = GetParentNode(...);
item.FontWeight = FontWeights.Bold;
這不僅改變了父母的風格大膽,而且所有的孩子。我一直在尋找屬性來禁用TreeView
類中的遞歸更新,但我找不到任何。我如何避免這種行爲?
我有一個TreeView
包含很多項目,顯然排列在樹形結構中。我試圖以正常字體以粗體和其所有子節點打印父節點。然而,當我這樣做時:樣式更改應用於TreeView節點的所有子節點
TreeViewItem item = GetParentNode(...);
item.FontWeight = FontWeights.Bold;
這不僅改變了父母的風格大膽,而且所有的孩子。我一直在尋找屬性來禁用TreeView
類中的遞歸更新,但我找不到任何。我如何避免這種行爲?
設置字體屬性時,它會將其應用於所有孩子。您可以創建一個新的標題模板並將其僅應用於作爲父項的節點。
,在我的測試工作已經被設置前景色替代:
public MainWindow()
{
InitializeComponent();
StyleParents(MyTreeView.Items);
}
private void StyleParents(ItemCollection items)
{
foreach (var i in items)
{
TreeViewItem tvi = i as TreeViewItem;
if (tvi != null)
{
if (tvi.HasItems)
{
tvi.Foreground = Brushes.Magenta;
StyleParents(tvi.Items);
}
}
}
}
我發現,在WPF TreeView
,屬性轉移到自己的孩子,如果他們沒有已經設置。避免此問題的最簡單方法(至少編程方式)是在創建子節點時將其設置爲默認字體。例如。
TreeViewItem item = new TreeViewItem();
item.FontWeight = FontWeights.Normal;
// ...add item to tree
如果您現在將父節點的FontWeight
設置爲粗體,則子項不會更改。
你是否在代碼背後?你在XAML中有HierarchicalDataTemplate嗎? – sexta13
我確實在XAML中設計了「TreeView」(儘管代碼太簡單了,但幾乎沒有提及),但設置字體權重必須以編程方式完成,因爲它是用戶交互的一部分。 – Yellow
看看這個:http://stackoverflow.com/questions/4487604/setting-font-of-parent-in-nodes-in-wpf-tree-view-to-bold-using-code-behind 它是顯示了類似的問題,用數據觸發器解決。 – sexta13