2011-04-12 15 views
1

如何在WPF中设置格式并将其放入布局中?我的意思是,我知道如何制作动态控制并将它们投射到网格或面板上,但有没有更好的方法?就像如果这是一个Web应用程序,我可以使用一些HTML和CSS,并得到我想要的,但有什么比在WPF中创建动态控件更好?我有数据库表充满了我想要显示在我的WPF应用程序中的东西。我可以为此修改DataGrid或ListView或其他内容吗?我附上图片,这可能会让您更容易理解我在说什么。在WPF中没有动态控件的布局和格式化

图片:

我的数据,数据库中的表内 - http://i.stack.imgur.com/LnHCv.png

我的数据,HTML和CSS格式 - http://i.stack.imgur.com/6PHBH.png

回答

2

在WPF做到这一点,典型的方式是通过Data Templating。一般来说,如果你想显示一组按照你的第二个屏幕截图格式化的数据,你可以将数据集(通常包含在ObservableCollection等集合中)绑定到ItemsControl的ListBox或类似的子项,并设置您创建的ItemsTemplateDataTemplate可以用您希望的格式显示项目。

例如,很粗糙逼近你的HTML布局:

<ListBox ItemsSource="{Binding}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate DataType="TypeOfYourDataObject"> 
      <StackPanel> 
       <TextBlock FontSize="12" Foreground="Turquoise" Text="{Binding NickName}"/> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock FontSize="11" Foreground="Gray" Text="email/"/> 
        <TextBlock FontSize="11" Foreground="Turquoise" Text="{Binding EmailAddress}"/> 
       </StackPanel> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock FontSize="11" Foreground="Gray" Text="web/"/> 
        <TextBlock FontSize="11" Foreground="Turquoise" Text="{Binding Url}"/> 
       </StackPanel> 
       <Separator/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+1

通过动态控制,我的意思.. 标签标签=新的Label(); label.Margin = new Thickness(10); label.Content =“某个值”; someContainer.Children.Add(label); – alizahid 2011-04-12 16:14:58

+0

好吧,如上所示,您最好在XAML中定义控件。 :) – 2011-04-12 16:17:58

+0

谢谢一堆! ps:我还没有想出如何发布代码,每行之前有四个空格不起作用? :P – alizahid 2011-04-12 16:20:01