powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как привязывать свойство ItemsSource к свойству объекта
7 сообщений из 7, страница 1 из 1
Как привязывать свойство ItemsSource к свойству объекта
    #37478082
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде бы ничего сложного, но не получается.
Присваиваю 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
Как привязывать свойство ItemsSource к свойству объекта
    #37478370
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мало инфы. дай полный xaml и код под ним.
...
Рейтинг: 0 / 0
Как привязывать свойство ItemsSource к свойству объекта
    #37479730
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде биндинг работает только со свойствами, поля класс myclass должны реализовывать get; и set;
Попробуй.
Код: plaintext
1.
2.
3.
4.
public class myclass
{
       public string Property1 { get; set; }
       public ObservableCollection<myType> myTypes { get; set; }
}
...
Рейтинг: 0 / 0
Как привязывать свойство ItemsSource к свойству объекта
    #37479733
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще можно в студии, в окне Output, посмотреть ошибки биндинга
...
Рейтинг: 0 / 0
Как привязывать свойство ItemsSource к свойству объекта
    #37479735
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лучше пропфул, в дальнейшем всеравно придется нотифи проперти чендж реализовывать
Код: 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
Как привязывать свойство ItemsSource к свойству объекта
    #37479784
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iber,

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

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


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