我有一个控件,显示有关Foo
对象的信息。我正在做数据绑定就好了。但是,我在此控件中有AutocompleteTextBox
,需要ItemsSource
。数据存在于我的应用中,但没有理由在Foo
的每个实例上都可用。处理它的首选模式是什么?
我在另一个类上有一个静态方法,它将返回我想要的列表 - Bar.GetNames()
。有什么方法可以从XAML中调用它吗?或者我需要使用StaticResource
吗?
我正在使用Silverlight 4。
答案 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();
}