【发布时间】:2010-07-29 14:10:46
【问题描述】:
我的页面上有一个 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; }
}
我的 TreeView 的 XAML 如下:
<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”时打开表单并且客户端将为空。 I open it again when client 'ABC' is selected and it returns the correct TreeViewItem.有没有人遇到过这个问题或者知道什么可以帮助解决这个问题?
我在 TreeView 的 Loaded 事件中运行上述代码。
【问题讨论】:
标签: silverlight treeview silverlight-4.0