2010-12-09 3 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(); }} 
} 
Смежные вопросы