Я хочу связать свойство одного объекта с аналогичным свойством одного из его дочерних объектов, тогда как этот дочерний контент (включая значение рассматриваемого свойства) получается из DataTemplate
. Это все происходит в UserControl
, если это имеет значение.WPF привязка к свойству, полученному с DataTemplate
<UserControl.Resources>
<DataTemplate x:Key="RText">
<TextBlock Text="TextR" ToolTip="TextR"/>
</DataTemplate>
</UserControl.Resources>
<StackPanel x:Name="LayoutRoot" ToolTip="{Binding Path=ToolTip, ElementName=TemplText, FallbackValue='error'}">
<TextBlock Text="Some common static text " />
<ContentControl x:Name="TemplText" ContentTemplate="{StaticResource RText}" />
</StackPanel>
Кроме того, в коде-позади, в конструкторе этого элемента управления, есть присвоение
LayoutRoot.DataContext = this
, который, по-видимому требуется для того, чтобы связываться с UserControl
«s собственных свойств (это не показано в фрагменте). Думаю, это не имеет значения для этой проблемы, но мне нужна эта линия.
Идея заключается в следующем: вся StackPanel
(LayoutRoot
) должны иметь один и тот же ToolTip
как ContentControl
(TemplText
). Однако эта всплывающая подсказка должна быть взята из указанного шаблона, т. Е. В этом случае будет «TextR».
Основная причина такого подхода состоит в том, что ContentControl
в конечном итоге будет выбран с помощью довольно сложная DataTemplateSelector
(назначаются ContentTemplateSelector
, а не ContentTemplate
), и я хочу, чтобы не создавать подобный селектор для общей подсказки. Я бы предпочел включить всплывающую подсказку в выбранный шаблон и затем распространить его, чтобы охватить весь элемент управления. Все элементы, в том числе и ToolTip, также будут гораздо более подробными, чем просто TextBlock
, и нецелесообразно делать все это (StackPanel
) выбираемым шаблоном.
Указанный выше код не работает в том смысле, что всплывающая подсказка не показана для всего элемента управления; он отображается только для TemplText
. Тем не менее, FallbackValue
также не отображается, что указывает на отсутствие проблем с этим путем: он находит элемент, но предположительно принимает ToolTip
непосредственно из него (который равен null
), а не из шаблона.
Есть ли проблема в этой проблеме? или, может быть, только лучший подход WPF для достижения того же результата? Я новичок в WPF.
Я понимаю, что у самой DataTemplate
нет всплывающей подсказки; это один из его элементов. Но как я могу обратиться к нему? Или я должен каким-то образом использовать стиль, который принадлежит шаблону?
Что такое 'ToolTipProp'? – Zeus
Это было бы свойство в вашей модели. вы определите это свойство. это было бы обычным свойством CLR, поскольку 2-сторонняя привязка не нужна. – AnjumSKhan
Но это предполагает, что я программирую программную подсказку? .. Но я не хочу этого делать. Вся идея состоит в том, что код должен выбирать только «DataTemplate», и шаблон статически определяет соответствующую подсказку. Для данного шаблона есть только одна подходящая подсказка. – Zeus