У меня есть TreeView на моей странице.Он связан с набором клиентов, содержащих контракты, например:
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.Кто-нибудь сталкивался с этим раньше или знает что-нибудь, на что я могу посмотреть, чтобы помочь решить проблему?
Я запускаю приведенный выше код в событии Loaded TreeView.