2010-12-09 66 views
0

我有一個顯示有關Foo對象的信息的控件。我正在做數據綁定就好了。但是,我有一個AutocompleteTextBox在這個控制,需要一個ItemsSource。數據存在於我的應用程序中,但沒有任何理由在Foo的每個實例上都可用。這裏處理它的首選模式是什麼?Silverlight:如何做這個數據綁定?

我有一個不同的類的靜態方法,將返回我想要的列表 - Bar.GetNames()。有什麼方法可以從XAML中調用?或者我需要使用StaticResource

我使用Silverlight 4

回答

0

最簡單的方法是做它的代碼隱藏,大概在AutoCompleteTextBox.Loaded事件處理程序。例如:

void AutoCompleteTextBox_Loaded(object sender, EventArgs e) 
{ 
    ((AutoCompleteTextBox)sender).ItemsSource = Bar.GetNames(); 
} 
0

這可能會去一些不同的方法......

您可以創建具有嵌入式上市定製AutoCompleteTextBox(從一些靜態庫內部拉到應用等等......)在控制範圍內。

您可以將Foo上的屬性發送到應用程序中的服務或其他中間人以從單個位置檢索數據。

可以內XAML的...

Text={x:Static namespace:type}

...這裏命名空間是在XAML定義你的類型的居住命名空間引用靜態資源。

0

不幸的是,您無法在Silverlight XAML中引用靜態屬性。

我建議像FooViewModel:

class FooViewModel: AnyBasicViewModelAround { 
    public Foo Model {get; set; } 
    public ItemNames : IList<ItemEntry> { get { return Bar.GetNames(); }} 
}