|
Binding FontFamily в DataTemplate
|
|||
---|---|---|---|
#18+
Добрый день. У меня есть DataGrid, в RowDetailsTemplate которого я поместил ещё один DataGrid Подскажите пожалуйста, каким образом я могу забиндить FontFamily второго DataGrid к первому, или как я вручную могу поменять свойство FontFamily у второго DataGrid. И из этого вытекает второй вопрос, если я DataTemplate помещу в ресурсы: Код: c# 1.
Каким образом мне можно использовать этот DataTemplate внутри RowDetailsTemplate ? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2014, 14:50 |
|
Binding FontFamily в DataTemplate
|
|||
---|---|---|---|
#18+
iwebcas, FontFamaly свойство наследуемое, то есть оно будет наследоваться от родителя. Его не нужно биндить. Достаточно задать нужное значение на нужном уровне и вся ветка в этом дереве будет иметь такое же значение. Это прекрепляемое свойство класса TextElement, вот оно public static readonly DependencyProperty FontFamilyProperty = DependencyProperty.RegisterAttached("FontFamily", typeof (FontFamily), typeof (TextElement), (PropertyMetadata) new FrameworkPropertyMetadata((object) SystemFonts.MessageFontFamily, FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.Inherits ), new ValidateValueCallback(TextElement.IsValidFontFamily)); выделил жирным соотвествуюзий FrameworkPropertyMetadataOptions ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2014, 16:09 |
|
Binding FontFamily в DataTemplate
|
|||
---|---|---|---|
#18+
Попробуйте выставить его в RowStyle у DataGrid. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2014, 17:33 |
|
Binding FontFamily в DataTemplate
|
|||
---|---|---|---|
#18+
Roman Mejtes, Спасибо что отозвались. Вы правы на счёт того, что FontFamaly свойство наследуемое. Видимо я не корректно сформулировал свой вопрос. И в первом и во втором DataGrid-е текст представляю так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Отличается лишь x:Name x:Name="dgv1_Title и x:Name="dgv2_Title В коде меняю FontFamily следующим образом (не по канонам WPF, быть может вы подскажите как иначе:) ) Код: c# 1.
После чего хочу что-бы FontFamily менялся и во втором (на самом деле у меня в проекте 5 уровневая вложенность DataGrid-ов) Насильно (ручками) не получается менять FontFamily и во втором DataGrid-e (текстблоке), т.к. DataTemplate вложен в RowDetailsTemplate, а не в ресурсы грида. (Template.FindName возвращает null) Собственно вот такая у меня проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2014, 17:53 |
|
Binding FontFamily в DataTemplate
|
|||
---|---|---|---|
#18+
лично я для понимания того как выгледит визуальное дерево моей программы использую программу Snoop версии 2.8.0, в ней можно просмотреть всё визуальное дерево, проверить значения свойств каждого элемента, байндинг, в том числе и изменять эти значение. (в целом это обычный XamlSpy или WPFSpy). установите программу и найдите тот элемент, в котором нужно изменить значение шрифта, найдите его через визуальное дерево и поменяйте значение. если хотите делать это программно. мне не очень понятно, зачем вам делать это программно, если вы используйте шаблоны, то с помощью Xaml можно связать значение поля FontFamaly с моделью представления через обычное связывание. Важно учитывать, что после изменения свойства все наследники поменяются ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2014, 09:57 |
|
|
start [/forum/topic.php?fid=21&fpage=19&tid=1440980]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 123ms |
0 / 0 |