0

我们需要根据从数据库中检索的结果在视图中动态加载文本块。

例如:如果计数返回为“5”

我需要显示 5 个文本块,我们还需要在文本块上设置“上下文菜单”。

如果用户右键单击上下文菜单,他可以选择通过单击显示其他详细信息来加载“更多文本块”。想知道如何完成此操作的最佳方法。

问候

柴土


感谢您的邮件,我们需要在不同文本块的不同上下文菜单上显示不同的数据。并且上下文菜单有标题,下面有“名称”“电话号码

例如:文本块 A,它有上下文菜单

美国广播公司

亚当“123456”

史蒂夫“56789”

加载更多详细信息

对于文本块 B,

国防军

萨钦“9999”

拉胡尔“8976”

加载更多详细信息

这应该是显示器。当用户单击“加载更多详细信息”时,在 currentTextBlocks 的右侧,应显示另一组 TextBlocks。

问候柴兔

4

1 回答 1

1

您可以使用绑定到 ItemTemplate 的 Observablecollection。例如:

XAML

<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
    <DataTemplate>
            <TextBlock Text="{Binding}">
                <TextBlock.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="More Detail" Click="LoadMoreDetail" />
                    </ContextMenu>
                </TextBlock.ContextMenu>
            </TextBlock>
    </DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

和代码隐藏

public ObservableCollection<string> myTextBlocks { get; set; }
private void LoadModel()
{
   myTextBlocks = new ObservableCollection<string>();
   // HERE IMPLEMENTS YOUR DB LOGIC TO LOAD
   myTextBlocks.Add("1");
   myTextBlocks.Add("2");
   myTextBlocks.Add("3");

   this.DataContext = myTextBlocks;
}
private void LoadMoreDetail(object sender, RoutedEventArgs e)
{

   myTextBlocks.Add("more detail");
}
于 2012-10-11T10:11:15.550 回答