我正在开发一个与Twitter互动的演示应用。我想创建一个像Twitter网站那样的控件,推文列表。
我做了以下操作,它是一个里面有多个stackpanel的列表框。如何在考虑性能的情况下创建这些控件。看看清单:
<ListBox Margin="50">
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="60"
>James T. Kirk</TextBlock>
<TextBlock FontSize="35"
>Rank: Captain</TextBlock>
<TextBlock FontSize="18"
>Position: Commanding Officer</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="50"
>Spock</TextBlock>
<TextBlock FontSize="30"
>Rank: Commander</TextBlock>
<TextBlock FontSize="18"
>Position: Executive (First)</TextBlock>
<TextBlock FontSize="18"
Foreground="#FFAAAA">Current action: Out for duty</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="40"
>Leonard McCoy</TextBlock>
<TextBlock FontSize="22"
>Rank: Lt. Commander</TextBlock>
<TextBlock FontSize="18"
>Position: Chief Medical Officer</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="40"
>Montgomery Scott</TextBlock>
<TextBlock FontSize="22"
>Rank: Lt. Commander</TextBlock>
<TextBlock FontSize="18"
>Position: Chief Engineer</TextBlock>
<TextBlock FontSize="18"
Foreground="#FFAAAA">Current action: Out for duty</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="30"
>Hikaru Sulu</TextBlock>
<TextBlock FontSize="18"
>Rank: Lieutenant</TextBlock>
<TextBlock FontSize="18"
>Position: Helm Officer</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="30"
>Nyota Uhura</TextBlock>
<TextBlock FontSize="18"
>Rank: Lieutenant</TextBlock>
<TextBlock FontSize="18"
>Position: Communications Officer</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="30"
>Pavel Chekov</TextBlock>
<TextBlock FontSize="18"
>Rank: Ensign</TextBlock>
<TextBlock FontSize="18"
>Position: Navigator</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="30"
>Christine Chapel</TextBlock>
<TextBlock FontSize="18"
>Rank: Enlisted Nurse</TextBlock>
<TextBlock FontSize="18"
>Position: Nurse</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel>
<TextBlock FontSize="30"
>Janice Rand</TextBlock>
<TextBlock FontSize="18"
>Rank: Enlisted Yeoman</TextBlock>
<TextBlock FontSize="18"
>Position: Yeoman</TextBlock>
<TextBlock FontSize="18"
Foreground="#AAAAAA">Current action: Sleeping</TextBlock>
</StackPanel>
</ListBoxItem>
</ListBox>
要测试它,只需创建一个WPF Windows项目,然后复制&amp;将代码粘贴到“Grid”元素元素中,然后运行。您将看到一个类似于我想要的列表框。我需要它擅长:
1)的性能 2)结合 3)交互
更新:我不是要求您查看此代码。我要求你看到它,所以你可以更好地理解我想要实现的目标。
更新2:我打算发布模型,但它有点复杂。所以我发布此链接以显示我想要做的事情:
在左边我们有点击的项目,它包含文本,媒体内容,其他带有字形的按钮。
在右边我们看到列表本身,如果它比垂直尺寸大,它会在右侧显示垂直滚动。
//I would do something like this:
var tweets = await TwitterUserHelper.GetTweetsAsync();
foreach(var tweet in tweets) {
MyListBox.Items.Add(new CustomListboxItemFromTemplate(tweet));
}
感谢。