powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGridTemplateColumn ItemsSource
13 сообщений из 13, страница 1 из 1
DataGridTemplateColumn ItemsSource
    #38299004
Symlink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.Есть список List<string> list = new List<string>();//он заполняется значениями сразу
2.есть DataGridTemplateColumn
3.как заполнить ComboBox значениями из list(не работает привязка с заполнением)?

Перед этим в DataContext в родительском гриде стоит другой объект поэтому заменяем его
Код: sql
1.
dg_ComboBox.DataContext = list;



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<DataGrid Name="dg_ComboBox">
                    <DataGrid.Columns>
                                  <DataGridTemplateColumn Width="*" Header="Имя">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <ComboBox ItemsSource="{Binding Path =list,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                                                    <ComboBox.Text>
                                                        <Binding Path="другой лист привязка работает" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
                                                    </ComboBox.Text>
                                                </ComboBox>                                                          
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                        <DataGrid.Columns>
                 </Datagrid>
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38303977
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Symlink,

Ну во первых у тебя нет соурса на самом датагриде, поэтому удивляться не приходится. Плюс tсли внимательно посомртиш на все свойства датагридколумна, то увидишь, что у него датаконтекста, поэтому твой способ однозначно не прокатывает
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38573986
pivka_bi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но все-таки, как привязаться к полю источника ItemSource датагрида?
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574189
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pivka_bi, в DataContext датагрида запихиваем объект класса, у которого есть свойство List<string> list. Это по примеру выше.
Но тут надо учесть тот факт, что лист должен заполниться раньше, чем произойдет биндинг.
Иначе читаем про INotifyPropertyChanged и метод OnPropertyChanged.
Да и про mvvm читаем в первую очередь.
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574284
pivka_bi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я в курсе про MVVM :)
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574301
pivka_bi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По сути, мне нужно привязаться к экземпляру ObservableCollection<T>. Я делал это так
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<DataGrid Height="150" 
                          ItemsSource="{Binding EditBlocks}" 
                          GridLinesVisibility="Horizontal" IsReadOnly="True">
                    <DataGrid.DataContext>
                        <Binding Path="EditBlocks.Items"></Binding>
                    </DataGrid.DataContext>
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Номер блока" Binding="{Binding Number}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Число ЗЛ" Binding="{Binding Count}"></DataGridTextColumn>
                        <DataGridTemplateColumn  Header="Степень готовности">
                           
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ProgressBar Value="{Binding }"></ProgressBar>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>



Столбец с прогресс баром ну никак не привязывается.
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574313
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pivka_bi, а к чему должен привязаться прогресс бар? Вы на грид вешаете объект какого-то класса, у этого класса есть Number, Count и должно быть какое-то сво-во отвечающее за прогресс.
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574316
pivka_bi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, оно так и называется. Но вот какое выражение привязки использовать?
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574317
pivka_bi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто Value="{Binding Progress}" не работает
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574416
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pivka_bi, тут пример как биндить ПБ
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574446
pivka_bi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pyroman69pivka_bi, тут пример как биндить ПБ
Спасибо, но проблема не в том как биндить к вью-модели. Проблема в том, что не получается прибиндить свойства прогресс-бара к свойствам элемента коллекции указанной в ItemsSource дата-грида. Если используется DataGridTextColumn - то без проблем. А если DataGridTemplateColumn - то содержимое темплейта привязывается к свойствам вью-модели. Вот, поправил код

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding EditBlocks}">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Номер блока" Binding="{Binding Number}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Число ЗЛ" Binding="{Binding Count}"></DataGridTextColumn>
                        <DataGridTemplateColumn Header="Степень готовности">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ProgressBar Value="{Binding Path=EProcessed}" 
                                                 Maximum="{Binding Path=Count}"
                                                 Minimum="0"></ProgressBar>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>



Во вью-модели все выглядит вот так


Код: c#
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.
                private ObservableCollection<EditBlock> _ediBlocks = new ObservableCollection<EditBlock>();

		public int EditCount
		{
			get { return _editCount; }
			set
			{
				if (_editCount != value)
				{
					_editCount = value;
					OnPropertyChanged(() => EditCount);
				}
			}
		}
		public ObservableCollection<EditBlock> EditBlocks
		{
			get { return _ediBlocks; }
			set
			{
				if (_ediBlocks != value)
				{
					_ediBlocks = value;
					OnPropertyChanged(() => EditBlocks);
				}
			}
		}
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38574605
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pivka_bi, класс EditBlock выложите
...
Рейтинг: 0 / 0
DataGridTemplateColumn ItemsSource
    #38699129
baguwka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pivka_bipyroman69pivka_bi, тут пример как биндить ПБ
Спасибо, но проблема не в том как биндить к вью-модели. Проблема в том, что не получается прибиндить свойства прогресс-бара к свойствам элемента коллекции указанной в ItemsSource дата-грида. Если используется DataGridTextColumn - то без проблем. А если DataGridTemplateColumn - то содержимое темплейта привязывается к свойствам вью-модели.

У меня сейчас точно такая же проблема, скажите, вы случаем не решили ее? Если да то какое решение? Я так и не смог нагуглить.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGridTemplateColumn ItemsSource
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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