0
我試圖將多個TreeView綁定到包含TreeViewItems的同一個ItemSource。每當我這樣做,最後一個加載是唯一一個顯示項目。 (所以,如果我有一個特定的順序聲明瞭三個樹視圖,中聲明的最後一個將顯示的項目只有一個。)將多個TreeViews綁定到同一個ItemSource
這是缺省設置的樣本WPF項目我創建以顯示它:
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TreeView x:Name="TreeOne" ItemsSource="{Binding TreeItems}" HorizontalAlignment="Left" Height="300" Margin="10,10,0,0" VerticalAlignment="Top" Width="238"/>
<TreeView x:Name="TreeTwo" ItemsSource="{Binding TreeItems}" HorizontalAlignment="Left" Height="300" Margin="10,10,0,0" VerticalAlignment="Top" Width="239" Grid.Column="1"/>
</Grid>
</Window>
代碼背後:(我使用MVVM在真實項目,但這種具有相同的錯誤)
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
TreeItems = new ObservableCollection<TreeViewItem>() { new TreeViewItem() { Header = "First item" } };
InitializeComponent();
}
public ObservableCollection<TreeViewItem> TreeItems { get; set; }
}
}
picture of the output of the above code
如果我註釋掉第二棵樹,第一棵樹會正常顯示。
感謝。這絕對是正確的答案。不幸的是,我的主要複雜數據對象擴展了一個控件,回想起來這是一個糟糕的決定,但現在它已經根深蒂固了。我想我必須通過複製代碼來快速修補它,以便使用單獨的數據源對每棵樹應用相同的修改。 :( – autogenerated7331