簡體   English   中英

WPF XAML 中的數據綁定

[英]WPF Databinding in XAML

在我當前的項目中,我對數據綁定沒有什么問題。 我有一個要綁定到 ListBox 的 ObservableCollection。

public ObservableCollection<GeoDataContainer> geoList = new ObservableCollection<GeoDataContainer>();

...之后...

geoListBox.ItemsSource = geoList;

這段代碼工作正常。 列表框有一個數據模板,一切看起來都很完美。

但我不想使用 C# 代碼進行綁定。 我想在 XAML 代碼中進行綁定。 我正在尋找幾天,但我不明白。 這是兩行 C# 代碼,但要將其存檔在 XAML 中,如果不為我的收藏創建我自己的 class 或添加 DataProvider 或資源或其他任何東西,這似乎是不可能的。

沒有簡單的方法嗎?

您所要做的就是公開集合並綁定到它。 例如,如果您將其公開為:

public ICollection<GeoDataContainer> GeoList
{
    get { return geoList; }
}

您將能夠綁定到它:

<ListBox ItemsSource="{Binding GeoList}"/>

“訣竅”是確保ListBoxDataContext是公開GeoList屬性的 class。

另一種好方法是將 geoList 實例化為資源

<WindowResources>
  <l:GeoCollection x:Key="geoList"/>
</WindowResources>

然后你有

GeoCollection geoList = FindResource("geoList") as GeoCollection;

當然,這僅適用於數據僅與視圖相關的情況。 如果這與 model 或模型視圖有關,則使用 DataContext 並綁定到其屬性。

肯特建議是通往 go 的方式......

進一步說明,如果您不希望將 DataContext 設置為列表,您還可以使用另一種形式的綁定檢索該屬性:

確保您的根控件有一個名稱,即“根”

{Binding ElementName=Root, Path=GeoList}

暫無
暫無

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

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