Silverlight:如何进行数据绑定?

时间:2010-12-09 20:24:26

标签: c# silverlight data-binding xaml

我有一个控件,显示有关Foo对象的信息。我正在做数据绑定就好了。但是,我在此控件中有AutocompleteTextBox,需要ItemsSource。数据存在于我的应用中,但没有理由在Foo的每个实例上都可用。处理它的首选模式是什么?

我在另一个类上有一个静态方法,它将返回我想要的列表 - Bar.GetNames()。有什么方法可以从XAML中调用它吗?或者我需要使用StaticResource吗?

我正在使用Silverlight 4。

3 个答案:

答案 0 :(得分:0)

这可能有几种不同的方式......

您可以创建一个自定义AutoCompleteTextBox,其中包含嵌入的列表(从应用程序内部的某个静态存储库中提取,等等)。

您可以让Foo上的属性转到应用程序中的服务或其他中间人,以从单个位置检索数据。

您可以通过...

引用XAML中的静态资源

Text={x:Static namespace:type}

...其中,namespace是XAML中定义的类型的驻留命名空间。

答案 1 :(得分:0)

不幸的是,您无法在Silverlight XAML中引用静态属性。

我建议像FooViewModel:

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

答案 2 :(得分:0)

最简单的方法是在后面的代码中执行它,可能在AutoComplete TextBox.Load事件处理程序中。类似的东西:

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