2010-12-09 69 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(); }} 
}