Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как привязывать свойство ItemsSource к свойству объекта / 7 сообщений из 7, страница 1 из 1
12.10.2011, 00:58
    #37478082
thunder2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
Вроде бы ничего сложного, но не получается.
Присваиваю DataContext окна экземпляр класса, который имеет несколько полей коллекций. Как привязать любой объект наследник от ItemsControl к нужному мне полю. Всё перепробовал. В хелпам ничего нету.
Код: plaintext
1.
2.
3.
4.
5.
public class myclass
{
       public string Property1;
       public ObservableCollection<myType> myTypes;
}
Это как будто бы исходный класс. Далее в перекрытом методе ShowDialog такой код
Код: plaintext
1.
2.
3.
4.
public override bool? ShowDialog(myclass a)
{
     DataContext = a;
}
В XAML такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<Grid>
   <Grid.ColumnDefinitions>
        <ColumnDefenition></ColumnDefenition>
        <ColumnDefenition></ColumnDefenition>
   </Grid.ColumnDefinitions>
   <TextBox Name="txt1" Text="{Binding Path=Property1}"
   <ListBox Name="list1" Grid.Column="1" ItemsSource="{Binding Source={x:static Application.Current}, Path=myTypes}">
</Grid>

В TextBox значение отображается, а в ListBox не могу заставить. Пробовал уже и так
Код: plaintext
1.
   <ListBox Name="list1" Grid.Column="1" ItemsSource="{Binding Path=myTypes}">
тоже ничего не получается. Работает только если в ShowDialog вставить строку
Код: plaintext
1.
  list1.ItemsSource = a.myTypes;

Расскажите как по-человечьи привязать чертов ItemsSource к полю объекта. Замучился уже.
...
Рейтинг: 0 / 0
12.10.2011, 10:45
    #37478370
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
мало инфы. дай полный xaml и код под ним.
...
Рейтинг: 0 / 0
12.10.2011, 23:52
    #37479730
maratoss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
Вроде биндинг работает только со свойствами, поля класс myclass должны реализовывать get; и set;
Попробуй.
Код: plaintext
1.
2.
3.
4.
public class myclass
{
       public string Property1 { get; set; }
       public ObservableCollection<myType> myTypes { get; set; }
}
...
Рейтинг: 0 / 0
12.10.2011, 23:55
    #37479733
maratoss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
Вообще можно в студии, в окне Output, посмотреть ошибки биндинга
...
Рейтинг: 0 / 0
12.10.2011, 23:59
    #37479735
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
лучше пропфул, в дальнейшем всеравно придется нотифи проперти чендж реализовывать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
public partial class MainWindow : Window, INotifyPropertyChanged
    {
        private string toTextBox;
        public string ToTextBox
        {
            get { return toTextBox; }
            set { toTextBox = value; this.OnPropertyChanged("ToTextBox"); }
        }

        private ObservableCollection<People> peoples;
        public ObservableCollection<People> Peoples
        {
            get { return peoples; }
            set { peoples = value; this.OnPropertyChanged("Peoples"); }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string name)
        {
            var eve = this.PropertyChanged;
            if (eve != null)
                eve(this, new PropertyChangedEventArgs(name));
        }

        public MainWindow()
        {
            InitializeComponent();
            this.ToTextBox = "Тектс в тексбоксе";
            this.Peoples = new ObservableCollection<People>() { new People() { FIO = "Ivanov Ivan Ivanch" }, 
                                                                new People() { FIO = "Ivanov2 Ivan2 Ivanch2" }};
        }

    }

    public class People
    {
        public string FIO { get; set; }
    }

Код: plaintext
1.
2.
3.
4.
5.
6.
 <Grid>
        <StackPanel>
            <TextBlock Width="100" Height="30" Text="{Binding Path=ToTextBox, ElementName=__Main}" ></TextBlock>
            <ListBox Width="200" DisplayMemberPath="FIO"  Height="200" ItemsSource="{Binding Path=Peoples, ElementName=__Main}"></ListBox>
        </StackPanel>
    </Grid>
...
Рейтинг: 0 / 0
13.10.2011, 01:35
    #37479784
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
Iber,

если хочется писать мало кода, то лучший выход объявить DependencyProperty.
...
Рейтинг: 0 / 0
14.10.2011, 20:42
    #37483150
thunder2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как привязывать свойство ItemsSource к свойству объекта
maratoss,

Да, точно ! Сделал поля свойтсвами всё стало работать. Видимо, что-то упустил когда про привязки читал.
Спасибо большое Вам и всем кто откликнулся.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как привязывать свойство ItemsSource к свойству объекта / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]