C# 带有自定义项模板的WPF列表框
我正在开发一个与Twitter交互的演示应用程序。我想创建一个类似twitter网站的控件,tweets列表 我做了以下工作,它是一个列表框,里面有多个StackPanel。如何在考虑性能的情况下创建这些控件。请看以下列表:C# 带有自定义项模板的WPF列表框,c#,.net,wpf,user-interface,wpf-controls,C#,.net,Wpf,User Interface,Wpf Controls,我正在开发一个与Twitter交互的演示应用程序。我想创建一个类似twitter网站的控件,tweets列表 我做了以下工作,它是一个列表框,里面有多个StackPanel。如何在考虑性能的情况下创建这些控件。请看以下列表: <ListBox Margin="50"> <ListBoxItem> <StackPanel> <TextBlock FontSize="60"
<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>
谢谢。我投票将此问题作为离题题结束,因为它属于“开”的问题。我认为您应该先阅读此问题,然后再尝试结束它。处理你的行为是很烦人的。@SilvioSantos你在你的帖子里没有问任何问题,所以不清楚你想要什么样的帮助。此外,上面的XAML中没有绑定:您可能希望查看MVVM(Model-View-ViewModel),因为这是在WPF中执行类似操作的首选方法。如果采用这种方法,您将把
ListBox
控件绑定到一个集合,然后该控件将为您处理UI虚拟化,从而提高性能。我同意Steven Rands的观点,如果没有合适的数据模型绑定,您将无法获得数据绑定和虚拟化。好的,这样更好。我将在几分钟内用模型更新问题。谢谢
//I would do something like this:
var tweets = await TwitterUserHelper.GetTweetsAsync();
foreach(var tweet in tweets) {
MyListBox.Items.Add(new CustomListboxItemFromTemplate(tweet));
}