我試圖了解 WPF 中系結的限制(如果有的話)。我了解系結到 XAML 中預定義數量的物件是如何作業的,例如:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding MyText}" Grid.Row="1" Grid.Column="0"/>
</Grid>
(我僅以 TextBlock 為例,它可能是一個 Button 或任何其他元素)現在,假設我需要顯示其中的多個而不是單個 TextBlock,但確切的數字只有在運行時才能知道-time,以及要在每個 TextBlock 中寫入的文本(以及我可能想要系結的其他屬性)。這是在實踐中可以實作的嗎?
uj5u.com熱心網友回復:
要在 WPF 中顯示多個專案,您通常會使用基ItemsControl類或從它派生的類之一。這是繼承層次結構的圖,ItemsControl當您只需要基本功能時可以使用它,當您需要更多時可以使用它的派生類之一:

ItemsControl及其子項提供一個ItemsSource屬性,允許您系結您的集合(通常是ObservableCollection)。但是,對于自定義型別,您還需要提供一個資料模板來告訴控制元件如何顯示內容。
例如,假設您有一個如下所示的簡單類:
public class Message
{
public string MyText { get; set; }
}
然后創建它們的串列(在您的情況下,您將在運行時填充串列):
Messages = new List<Message>
{
new Message { MyText = "SomeText1" },
new Message { MyText = "SomeText2" },
new Message { MyText = "SomeText3" },
};
您可以使用以下 xaml 顯示它們:
<ItemsControl ItemsSource="{Binding Messages}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding MyText}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在旁邊,DataTemplate您將添加用于顯示您的型別的屬性并系結到它們的控制元件。
筆記
請注意,上面的示例只是簡單的實作,只是為了展示如何開始。一旦您變得更高級,您可能需要為您的屬性(即INotifyPropertyChanged)以及為您的集合添加/洗掉專案等實施更改通知。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354193.html
