Silverlight: как сделать эту привязку данных? - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть элемент управления, который отображает информацию об объекте Foo. Я делаю привязку данных просто отлично. Тем не менее, у меня есть AutocompleteTextBox в этом элементе управления, который нуждается в ItemsSource. Данные существуют в моем приложении, но нет причин для их доступности в каждом экземпляре Foo. Каков предпочтительный способ борьбы с этим?

У меня есть статический метод в другом классе, который возвращает нужный мне список - Bar.GetNames(). Есть ли способ, которым я могу назвать это из XAML? Или мне нужно использовать StaticResource?

Я использую Silverlight 4.

Ответы [ 3 ]

0 голосов
/ 09 декабря 2010

К сожалению, вы не можете ссылаться на статическое свойство в Silverlight XAML.

Я бы предложил что-то вроде FooViewModel:

class FooViewModel: AnyBasicViewModelAround {
     public Foo Model {get; set; }
     public ItemNames : IList<ItemEntry> { get { return Bar.GetNames(); }}
}
0 голосов
/ 10 декабря 2010

Простейшим способом было бы сделать это в codebehind, вероятно, в обработчике событий AutoCompleteTextBox.Loaded Что-то вроде:

void AutoCompleteTextBox_Loaded(object sender, EventArgs e)
{
    ((AutoCompleteTextBox)sender).ItemsSource = Bar.GetNames();
}
0 голосов
/ 09 декабря 2010

Это может пойти несколькими путями ...

Вы можете создать пользовательский AutoCompleteTextBox, в который будет встроен листинг (извлеченный из некоторого статического репозитория внутри приложения и т. Д.) Внутриcontrol.

У вас может быть свойство в Foo, которое обращается к службе или другому посреднику в приложении для извлечения данных из одного места.

Вы можете ссылаться на статический ресурс в XAMLby ...

Text={x:Static namespace:type}

... где пространство имен - это постоянное пространство имен вашего типа, определенного в XAML.

...