[英]WPF TreeviewItem header text is set to object type when using stackpanel
我正在嘗試使用具有圖像和文本的項目來制作樹狀視圖。
我已經遵循了這個示例http://www.codeproject.com/Articles/124644/Basic-Understanding-of-Tree-View-in-WPF,但在treeviewitem標頭上卻遇到了奇怪的行為。
標頭應該包含圖像和標簽,但是卻顯示為所有treeviewitems的標頭文本: System.Windows.Controls.StackPanel
這是我的代碼:
tree_view.Items.Add(GetTreeView("text"));
private TreeViewItem GetTreeView(string text)
{
TreeViewItem newTreeViewItem = new TreeViewItem();
// create stack panel
StackPanel stack = new StackPanel();
stack.Orientation = Orientation.Horizontal;
// create Image
Image image = new Image();
image.Source = new BitmapImage(new Uri(@"/ComponentName;component/Resources/Images/warning.png", UriKind.Relative));
// Label
Label lbl = new Label();
lbl.Content = text;
// Add into stack
stack.Children.Add(image);
stack.Children.Add(lbl);
// assign stack to header
newTreeViewItem.Header = stack;
return newTreeViewItem;
}
編輯:
另外,我在TreeView的HeaderTemplate中有此代碼來包裝文本:
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Width="139" TextWrapping="Wrap" Text="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
您可以使用ContentPresenter替換HeaderTemplate
的TextBlock
或刪除HeaderTemplate
以獲取正確的結果。
由於設置了HeaderTemplate
,因此TVI的標題將顯示為文本塊,並且其數據上下文更改為堆棧面板。
我設法通過刪除xaml中的HeaderTemplate
來解決此問題。
然后,在我的代碼隱藏文件,我改變了Label
,以Textblock
,然后設置TextWrapping
和Width
-Properties的Textblock
-object是這樣的:
tree_view.Items.Add(GetTreeView("text"));
private TreeViewItem GetTreeView(string text)
{
TreeViewItem newTreeViewItem = new TreeViewItem();
// create stack panel
StackPanel stack = new StackPanel();
stack.Orientation = Orientation.Horizontal;
// create Image
Image image = new Image();
image.Source = new BitmapImage(new Uri(@"/ComponentName;component/Resources/Images/warning.png", UriKind.Relative));
// Label
Textblock lbl = new Textblock();
lbl.Text = text;
lbl.TextWrapping = TextWrapping.Wrap;
lbl.Width = 139;
// Add into stack
stack.Children.Add(image);
stack.Children.Add(lbl);
// assign stack to header
newTreeViewItem.Header = stack;
return newTreeViewItem;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.