Использование частного поля в качестве ItemsSource ItemsControl? - PullRequest
0 голосов
/ 10 мая 2011

Позволяет иметь класс:

public partial class MyControl: UserControl{
    private ObservableCollection<string> names = 
            new ObservableCollection<string>();
    ...
}

и затем в XAML для того же UserControl, что в XAML для класса MyControl:

<UserControl x:Class="MyProject.MyControl" xmlns="..." xmlns:x="...">
    <ItemsControl ItemsSource="{Binding ???????}" />
</UserControl>

Возможно лизаменить ??????? чем-то, что свяжет ItemsSource с полем names в коде позади?Как правильно сделать это, если есть способ?Если нет способа, names должно быть свойством зависимости, а не просто полем?

1 Ответ

3 голосов
/ 10 мая 2011

Вам просто нужно сделать публичное свойство getter для имен

public IEnumerable<string> Names
{
     get{return names;}
}

Это не обязательно свойство зависимости.

И тогда ваш xaml может быть

<ItemsControl ItemsSource="{Binding Names}" />

Edit: Просто перечитайте свое название. Если вы хотите, чтобы имена были приватными, вам нужно выполнить привязку внутри кода.

        Binding b = new Binding();
        b.Source = names;
        itemsControl.SetBinding(ItemsControl.ItemsSourceProperty, b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...