2011-04-12 65 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