powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding параметр в ItemsSource GridControl
8 сообщений из 8, страница 1 из 1
Binding параметр в ItemsSource GridControl
    #39457320
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Подскажите пожалуйста как можно положить параметр в ItemsSource из RowData.Row.
Хочу фильтровать выпадающий список, относительно строки.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<dxg:GridControl.Columns>
    <dxg:GridColumn Header="Связь" SortOrder="Descending" FieldName="LinkDto.Id">
        <dxg:GridColumn.DisplayTemplate>
            <ControlTemplate>
                <dxe:ComboBoxEdit MinWidth="120" HorizontalAlignment="Left" VerticalAlignment="Center"
                    ItemsSource="{Binding LinkTypes}, Converter={ StaticResource LinkDtoConvertor }, ConverterParameter={ ??? }}"
                    SelectedItem="{Binding Path=RowData.Row.LinkDto}" DisplayMember="Name" />
            </ControlTemplate>
        </dxg:GridColumn.DisplayTemplate>
    </dxg:GridColumn>
</dxg:GridControl.Columns>
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457346
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать IMultiValueConverter. В WPF ConverterParameter - не DependencyProperty, и забиндить его нельзя. Есть разные воркэраунды на эту тему - вот , вот , но на практике уже было выяснено, что все они той или иной степени кривости, и в различных ситуациях перестают работать.
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457607
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте свой MarkupExtension для Binding'е, где можно будет биндить параметры конвертора :)
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457616
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesсоздайте свой MarkupExtension для Binding'е, где можно будет биндить параметры конвертора :)
По данным мною выше ссылкам это есть. Всё равно оно работает через пень-колоду. MultiValueConverter надежнее.
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457623
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныRoman Mejtesсоздайте свой MarkupExtension для Binding'е, где можно будет биндить параметры конвертора :)
По данным мною выше ссылкам это есть. Всё равно оно работает через пень-колоду. MultiValueConverter надежнее.
А нельзя сделать так, чтоб не приходилось извращаться с конверторами? модель представления для это и существует
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457633
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesА нельзя сделать так, чтоб не приходилось извращаться с конверторами? модель представления для это и существует
Ну, попробуйте, может, у вас получится. Я в свое время по этим граблям уже гулял.
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457727
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныRoman MejtesА нельзя сделать так, чтоб не приходилось извращаться с конверторами? модель представления для это и существует
Ну, попробуйте, может, у вас получится. Я в свое время по этим граблям уже гулял.
Согласен, говно код получится. Лучше логику, которая должна выполняться на стороне представления не разносить.
Попробую через мультибиндинг.
...
Рейтинг: 0 / 0
Binding параметр в ItemsSource GridControl
    #39457735
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал через мульбиндинг:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<dxg:GridControl.Columns>
    <dxg:GridColumn Header="Связь" SortOrder="Descending" FieldName="LinkDto.Id">
        <dxg:GridColumn.DisplayTemplate>
            <ControlTemplate>
                <dxe:ComboBoxEdit MinWidth="120" HorizontalAlignment="Left" VerticalAlignment="Center"
                         SelectedItem="{Binding Path=RowData.Row.LinkDto}" DisplayMember="Name">
			<dxe:ComboBoxEdit.ItemsSource>
			      <MultiBinding Converter="{StaticResource LinkDtoConvertor}"> 
				    <Binding Path="RowData.Row.LinkDto" />
			      </MultiBinding>
			</dxe:ComboBoxEdit.ItemsSource>
		 </dxe:ComboBoxEdit>		
            </ControlTemplate>
        </dxg:GridColumn.DisplayTemplate>
    </dxg:GridColumn>
</dxg:GridControl.Columns>


Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
class LinkDtoConvertor : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (values != null && values.First() != null)
        {
			var value = values.First() as LinkDto;
			if (value != null)
			{
			    return value.id	== LinkEnum.One 
				    ? getAllLinkDto()
                    : getAllLinkDto().Where(w => w.Id != LinkEnum.One).ToList();					
			}
        }
        return null;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        return null; 
    }
}
class LinkDto 
{
    public LinkEnum Id {get; set;}
    public string Name {get; set;}	
}
enum LinkEnum : byte
{
	One = 1,
	Two = 2,
	Three = 3
}

IList<LinkDto> getAllLinkDto();



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


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