2012-01-13 68 views
0

有沒有一個簡單的例子,如何讓一個組合框顯示一個數據網格而不是一個列表?我一直在嘗試SO和谷歌,但不斷得到結果,顯示如何把一個組合框放入數據網格。有沒有簡單的方法將數據網格放入組合框?

+0

你是說有一個combobox顯示爲數據網格中的一個字段..?如果是的話,這將在模板級別..不知道如果你的問題是一個錯字或不.. – MethodMan 2012-01-13 22:42:29

+0

你期望通過這樣做,實現什麼? – 2012-01-13 22:44:29

+0

爲什麼你想在一個組合框中有一個數據網格?因爲這聽起來有點奇怪。 – ppiotrowicz 2012-01-13 22:44:34

回答

1

這當然有可能。這是WPF的力量。

This鏈接說明如何做到這一點。

+1

請避免鏈接到現場,除非您提供摘要,以便您的答案可以獨立存在,或者如果是給定技術的官方文檔。鏈接死... – 2012-01-14 02:12:43

2

要回答你的第一個問題,「是否有一個簡單的例子,說明如何讓組合框顯示數據網格而不是列表?很直: - 答案是否定的。

也就是說,有幾種不同的方法可以完成看起來像的DataGrid(即帶有列的列表)。

用僞造的東西很簡單的一個樣品可能看起來像一個DataGrid,可能是改變組合框的ItemTemplate

<ComboBox x:Name="cb" ItemsSource="{Binding Persons}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="50" /> 
        <ColumnDefinition Width="50" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Text="{Binding Name}" /> 
       <TextBlock Grid.Column="1" Text="{Binding Age}" /> 
      </Grid> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

您還可以使用SharedSizeGroup(和Grid.IsSharedSizeScope)同步的列寬進行的跨導致所有項目動態和對齊的佈局。

+0

這可能會解決我的問題。 – 2012-01-13 23:03:33

+0

我很高興,如果它適合你! – ThomasAndersson 2012-01-13 23:04:27

+0

無論如何,DataGrid可能會矯枉過正,因爲它通常不僅僅用於顯示數據,還包括編輯和添加。 – 2012-01-14 02:17:05

0

正如我所說,對我來說,使用ComboBox是件奇怪的事情。也許你可以這樣做:

<ToggleButton x:Name="Toggle" Width="200" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" /> 
    <Popup IsOpen="{Binding ElementName=Toggle, Path=IsChecked}" PlacementTarget="{Binding ElementName=Toggle}" Placement="Bottom" Width="{Binding ElementName=Toggle, Path=Width}"> 
     <DataGrid> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Test1" /> 
       <DataGridTextColumn Header="Test2" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Popup> 

這只是一個例子,它缺少一些功能,如自動彈出式隱藏。但你明白了。

+0

這也是一個很大的好處,就是你不打算在模板中使用數據網格 - 這將簡化綁定。 – ppiotrowicz 2012-01-13 22:57:24

相關問題