2015-04-26 54 views
0

在xaml中,如何在展開控件時在展開控件中使用網格顯示ObservableCollection?將控件與可觀察集合進行綁定

public class BoundPoco 
(
    public string ExpanderText { set; get; } 
    public ObservableCollection<DisplayDetail> { set; get; } 
) 

public class DisplayDetail 
{ 
    public string FirstDisplayColumn { set; get; } 
    public string SecondDisplayColumn; { set; get; } 
} 
+5

我會首先給ObservableCollection一個名稱,以便您的代碼編譯。然後我只需將'GridView'直接綁定到它。你在使用視圖模型嗎?你有什麼嘗試? –

回答

0

您應該使用擴展器控件中的項目控件來實現此目的。

首先排序錯誤,淘汰落後的代碼 - 你對「SecondDisplayColumn」流浪分號:

public string SecondDisplayColumn { set; get; } 

...你對主要觀察的集合屬性沒有名字!

public ObservableCollection<DisplayDetail> DisplayDetails { set; get; } 

然後,如果你不使用依賴屬性或INotifyPropertyChanged的 - 創建XAML顯示像這樣的數據(使用一個名稱「項目」):

<Expander Name="myExpander" Background="Tan" 
     HorizontalAlignment="Left" Header="My Expander" 
     ExpandDirection="Down" IsExpanded="True" Width="Auto"> 
    <ItemsControl Name="items"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition /> 
         <ColumnDefinition /> 
        </Grid.ColumnDefinitions> 

        <TextBlock Grid.Column="0" Text="{Binding FirstDisplayColumn}"/> 
        <TextBlock Grid.Column="1" Text="{Binding SecondDisplayColumn}"/> 
       </Grid> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Expander> 

然後你就可以填充可觀察的收集並設置代碼隱藏的項目源代碼:

DisplayDetails.Add(new DisplayDetail() { FirstDisplayColumn = "FieldName1", SecondDisplayColumn = "FieldValue1" }); 
DisplayDetails.Add(new DisplayDetail() { FirstDisplayColumn = "FieldName2", SecondDisplayColumn = "FieldValue2" }); 
DisplayDetails.Add(new DisplayDetail() { FirstDisplayColumn = "FieldName3", SecondDisplayColumn = "FieldValue3" }); 

items.ItemsSource = DisplayDetails; 
+0

謝謝!我會給它一個旋轉... – rod

+0

很酷,讓我們知道它是否工作。 –

相關問題