powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding FontFamily в DataTemplate
6 сообщений из 6, страница 1 из 1
Binding FontFamily в DataTemplate
    #38835127
iwebcas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
У меня есть DataGrid, в RowDetailsTemplate которого я поместил ещё один DataGrid
Подскажите пожалуйста, каким образом я могу забиндить FontFamily второго DataGrid к первому, или как я вручную могу поменять свойство FontFamily у второго DataGrid.
И из этого вытекает второй вопрос, если я DataTemplate помещу в ресурсы:
Код: c#
1.
<Grid.Resources> ... </Grid.Resources>


Каким образом мне можно использовать этот DataTemplate внутри RowDetailsTemplate ?
Спасибо.
...
Рейтинг: 0 / 0
Binding FontFamily в DataTemplate
    #38835254
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Binding FontFamily в DataTemplate
    #38835342
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте выставить его в RowStyle у DataGrid.
...
Рейтинг: 0 / 0
Binding FontFamily в DataTemplate
    #38835362
iwebcas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, Спасибо что отозвались. Вы правы на счёт того, что FontFamaly свойство наследуемое.
Видимо я не корректно сформулировал свой вопрос.

И в первом и во втором DataGrid-е текст представляю так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<DataGridTextColumn Header="Title" Binding="{Binding Title}" Width="500" x:Name="dgv1_Title">
 <DataGridTextColumn.ElementStyle>
  <Style TargetType="TextBlock">
   <Setter Property="TextWrapping" Value="Wrap" />
   <Setter Property="Padding" Value="20 0 0 0" />
  </Style>
 </DataGridTextColumn.ElementStyle>
 <DataGridTextColumn.EditingElementStyle>
  <Style TargetType="TextBox">
   <Setter Property="TextWrapping" Value="Wrap" />
   <Setter Property="AcceptsReturn" Value="true" />
   <Setter Property="Padding" Value="20 0 0 0" />
  </Style>
 </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>


Отличается лишь x:Name
x:Name="dgv1_Title и x:Name="dgv2_Title

В коде меняю FontFamily следующим образом (не по канонам WPF, быть может вы подскажите как иначе:) )
Код: c#
1.
form.dgv1_Title.FontFamily = Font.SelectedFontFamily;


После чего хочу что-бы FontFamily менялся и во втором (на самом деле у меня в проекте 5 уровневая вложенность DataGrid-ов)
Насильно (ручками) не получается менять FontFamily и во втором DataGrid-e (текстблоке), т.к. DataTemplate вложен в RowDetailsTemplate, а не в ресурсы грида. (Template.FindName возвращает null)
Собственно вот такая у меня проблема.
...
Рейтинг: 0 / 0
Binding FontFamily в DataTemplate
    #38835722
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лично я для понимания того как выгледит визуальное дерево моей программы использую программу Snoop версии 2.8.0, в ней можно просмотреть всё визуальное дерево, проверить значения свойств каждого элемента, байндинг, в том числе и изменять эти значение.
(в целом это обычный XamlSpy или WPFSpy).
установите программу и найдите тот элемент, в котором нужно изменить значение шрифта, найдите его через визуальное дерево и поменяйте значение. если хотите делать это программно.
мне не очень понятно, зачем вам делать это программно, если вы используйте шаблоны, то с помощью Xaml можно связать значение поля FontFamaly с моделью представления через обычное связывание.
Важно учитывать, что после изменения свойства все наследники поменяются
...
Рейтинг: 0 / 0
Binding FontFamily в DataTemplate
    #38836015
iwebcas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

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


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