我的頁面上有一個TreeView。它必然包含合同,像客戶的集合:TreeViewItem.ItemContainerGenerator.ContainerFromItem不一致的結果
public class Client
{
public int ClientID { get; set; }
public string Name { get; set; }
public List<Contract> Contracts { get; set; }
}
public class Contract
{
public int ContractID { get; set; }
public int ClientID { get; set; }
public string Name { get; set; }
}
的XAML我的TreeView如下:
<sdk:TreeView x:Name="tvClientContract" ItemsSource="{Binding ClientContracts}">
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=Contracts}">
<TextBlock Text="{Binding Path=Name}" />
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:TreeView>
凡ClientContracts是List<Clients>
。綁定工作正常,我有一個分層網格。
是我遇到的問題是與TreeView控件就可以打開表單時,我想選擇當前客戶端,我目前使用下面的代碼:
TreeViewItem client = (TreeViewItem)tvClientContract.ItemContainerGenerator.ContainerFromItem(aClient);
或
TreeViewItem client = (TreeViewItem)tvClientContract.ItemContainerGenerator.ContainerFromIndex(tvClientContract.Items.IndexOf(aClient));
client.IsSelected = true;
但這會返回不一致的結果,例如,當客戶端'ABC'被選中且客戶端將爲空時,我打開表單。當客戶端'ABC'被選中並且它返回正確的TreeViewItem時,我再次打開它。有沒有人遇到過這個或知道任何我可以看看來幫助解決這個問題?
我在TreeView的Loaded事件中運行上面的代碼。
感謝您給我們提示有關UpdateLayout請()。 – Tony 2011-05-03 23:36:51
真棒,謝謝你,你救了我的一天! – 2011-07-22 14:42:11