Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Есть возможность передавать значение {Binding XPath=xxx} в шаблон?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
Недавно работаю с WPF и в голове пока всё это нужно уложить.
<GridViewColumn 
    Header="Имя" >
    <GridViewColumn.CellTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Mode=OneWay, XPath=name}" />
    </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

У меня разные столбцы, где-то нужно TextBlock использовать, где-то комбо и т.д.
Выделяю поэтому CellTemplate в отдельный шаблон "myTextBlockColumn"
Но в него как-то "XPath=name" хотелось бы передавать, не могу понять, как.
Пишу
<TextBlock Text="{Binding}" />

Но в каком месте передать само значение XPath=name? В каком-то из аттрибутов GridViewColumn, видимо..
4 дек 16, 04:46    [19964695]     Ответить | Цитировать Сообщить модератору
 Re: Есть возможность передавать значение {Binding XPath=xxx} в шаблон?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
Вернее, даже не так сформулировал.
У меня десяток столбцов - и все отформатированы одинаково (поэтому для этого шаблон колонки вынесен в DataTemplate x:key="myTextBlockColumn")
Вот как им задавать разный XPath?
4 дек 16, 04:58    [19964698]     Ответить | Цитировать Сообщить модератору
 Re: Есть возможность передавать значение {Binding XPath=xxx} в шаблон?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
3 часа искал.
Только задал вопрос на форуме, сразу нашёл ответ.
Через DisplayMemberBinding
4 дек 16, 05:10    [19964704]     Ответить | Цитировать Сообщить модератору
 Re: Есть возможность передавать значение {Binding XPath=xxx} в шаблон?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
Хотя нет, нифига не решил
Проблема в случае, если у меня не TextBlock, а Image.
Как мне передавать XPath для Image?
<GridViewColumn 
    Header="Аватар"
	CellTemplate="{StaticResource AvatarTemplate}" />
<GridViewColumn 
    Header="ещё какая-то картинка"
	CellTemplate="{StaticResource ImageTemplate}" />

<DataTemplate x:Key="AvatarTemplate">
    <Image Source="{Binding Mode=OneWay, XPath=photo}" Height="32" Width="32" />
</DataTemplate>
<DataTemplate x:Key="ImageTemplate">
    <Image Source="{Binding Mode=OneWay, XPath=someoneimage}" Height="32" Width="32" />
</DataTemplate>

AvatarTemplate и ImageTemplate полностью друг друга повторяют. Вопрос: как объединить два шаблона в один?
5 дек 16, 02:07    [19966540]     Ответить | Цитировать Сообщить модератору
 Re: Есть возможность передавать значение {Binding XPath=xxx} в шаблон?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6029
Charles Weyland
Хотя нет, нифига не решил
Проблема в случае, если у меня не TextBlock, а Image.
Как мне передавать XPath для Image?

Никак. Биндинги статичны в плане их определения в разметке. Так что либо устанавливать биндинг в codebehind на рантайме, либо вообще не указывать XPath, а к биндингу прикрутить конвертер, который будет выдавать результат в зависимости от.
5 дек 16, 06:23    [19966585]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить