[英]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}"/>
“訣竅”是確保ListBox
的DataContext
是公開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.