簡體   English   中英

將控件與可觀察的集合綁定

[英]binding a control with a observable collection

在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; }
}

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

首先,將您的代碼歸類為錯誤-您在“ SecondDisplayColumn”上使用了分號:

public string SecondDisplayColumn { set; get; }

...而且您在可觀察的主要收藏屬性中沒有名字!

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

然后,如果您不使用依賴項屬性或INotifyPropertyChanged,請創建XAML來顯示數據(名稱為“ items”),如下所示:

<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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM