我创建了一个动态列表,其中包含一些扩展视图。
这是我的代码:
foreach (var TransactionType in WorkflowBase.ViewModel_WFTransaction.AvailableTransactionTypes)
{
ExpanderView newDoc = new ExpanderView();
newDoc.FontSize = 32;
newDoc.Margin = new Thickness() { Bottom = 10, Left = 13, Right = 10, Top = 15 };
newDoc.Header = TransactionType.ProcessName;
foreach (var role in TransactionType.ListOfRoles)
{
TextBlock roleItem = new TextBlock();
roleItem.FontSize = 28;
roleItem.Margin = new Thickness() { Bottom = 4, Left = 4, Right = 4, Top = 4 };
roleItem.Text = role;
roleItem.Tag = TransactionType;
roleItem.Tap += roleItem_Tap;
newDoc.Items.Add(roleItem);
}
NewTransactionsPanel.Children.Add(newDoc);
}
正如你在扩展视图中看到的那样,我已经放入了文本块来显示我的数据,现在我想要做的是当我点击其中一个文本块时,我想获得列表中该项目的索引以及列表中的expandderview的索引。我不知道该怎么做。
这是加载后的列表图片,以提供更好的主意。
例如,如果我点击“po Mobile”标题下的“直线经理”,我现在想要2个项目列表中的直线经理文本块的索引,并且我想要po移动设备的索引更大的清单。
这是所有动态数据,因此列表中的项目数量会发生变化。
已解决: 根据Kookiz给我的建议,这就是我所做的, 1.我在textblock标签中添加了我需要的所有数据-see codesnippit, 然后我把它添加到我的导航栏中, 3.并在我的其他页面加载中查询它
1
roleItem.Tag =
TransactionType.ListOfRoles.IndexOf(role) + ","
+ WorkflowBase.ViewModel_WFTransaction.AvailableTransactionTypes.IndexOf(TransactionType)
+ "," + TransactionType.FormName
+ "," + TransactionType.ProcessID
+ "," + TransactionType.ActivityID
+ "," + TransactionType.FormID;
2
this.NavigationService.Navigate(new Uri("/UI/Documents/frmGenericNewTransaction.xaml?Formname="
+ FormName.ToString() +
"&Role=" + roleindex +
"&Processindex="+ processindex +
"&Processid=" + ProcID +
"&Activityid=" + ActID +
"&Formid=" + FormID +
"&Roleid=" + RoleName, UriKind.Relative));
3
NavigationContext.QueryString.TryGetValue("Activityid", out ActivityID);
NavigationContext.QueryString.TryGetValue("Roleid", out RoleName);
NavigationContext.QueryString.TryGetValue("Formid", out FormID);
答案 0 :(得分:2)
显而易见的方法是浏览扩展器的子控件,直到找到文本块。
更优雅的方法是将索引存储在文本块的Tag
属性中。你已经用它来存储你的TransactionType
,所以我想你知道它是如何工作的。只需使用更复杂的类型来存储索引以及您的事务类型。但是,如果您在现有元素之前添加新元素,您的索引可能会过时,因此这取决于您将如何更新商品。
最后但并非最不重要的是,您可以设置ItemTemplate并将列表分配给expandderview的ItemsSource属性,而不是手动将每个项目添加到您的expandderview。然后,在Tap
事件中,您可以从文本块的datacontext中检索整个角色对象。从那里开始,您需要构建代码以检索所需的信息。基本上,不要试图从UI中检索信息,而是让您的UI与您的对象结构相匹配,并从那里开始工作。