У меня есть элемент управления сеткой данных, в котором некоторые столбцы содержат текст, переполняющий соответствующие контейнеры.
Чтобы решить эту проблему, я добавляю всплывающую подсказку в шаблон управления для datagridcell, затем
привязать содержимое всплывающей подсказки к содержимому данных, привязав шаблон к свойству Content.
Код Xaml, приведенный ниже, выглядит следующим образом:
<Style x:Key="RotatedCell" TargetType="sdk:DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="sdk:DataGridCell">
<ContentPresenter
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" >
<ToolTipService.ToolTip>
<ToolTip Content="{TemplateBinding Content}"/>
</ToolTipService.ToolTip>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Сетка данных может отображаться с данными, отображаемыми успешно, но когда курсор находится над
сообщается об ошибке столбца:
*
Ошибка выполнения Microsoft JScript: необработанная ошибка в приложении Silverlight [Строка: 0 Position: 0]
в MS.Internal.XcpImports.MethodEx (IntPtr ptr, имя строки, CValue [] cvData)
в MS.Internal.XcpImports.MethodEx (объект DependencyObject, имя строки)
в MS.Internal.XcpImports.FrameworkElement_ApplyTemplate (FrameworkElement frameworkElement)
в System.Windows.Controls.Control.ApplyTemplate ()
at System.Windows.Controls.ToolTip.OpenPopup ()
at System.Windows.Controls.ToolTip.OnIsOpenChanged (Boolean isOpen)
в System.Windows.Controls.ToolTip.OnIsOpenPropertyChanged (DependencyObject d, DependencyPropertyChangedEventArgs e)
в System.Windows.DependencyObject.RaisePropertyChangeNotifications (DependencyProperty dp, объект oldValue, объект newValue)
в System.Windows.DependencyObject.UpdateEffectiveValue (свойство DependencyProperty, EffectiveValueEntry oldEntry, EffectiveValueEntry & newEntry, операция ValueOperation)
в System.Windows.DependencyObject.SetValueInternal (DependencyProperty dp, значение объекта, логическое значение allowReadOnlySet)
в System.Windows.DependencyObject.SetValue (свойство DependencyProperty, логическое значение b)
в System.Windows.Controls.ToolTipService.OpenAutomaticToolTip (Отправитель объекта, EventArgs e)
в MS.Internal.CoreInvokeHandler.InvokeEventHandler (Int32 typeIndex, делегат handlerDelegate, отправитель объекта, аргументы объекта)
в MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
*
Это явление озадачивает меня, потому что я думаю, что синтаксис xaml кажется правильным и об ошибках не сообщается во время процессов сборки и загрузки. Похоже, что элемент управления всплывающей подсказки пытается применить шаблон, когда собирается показываться, но я думаю, что это должно быть сделано в то же время, когда был применен шаблон элемента управления datagridcell. У кого-нибудь есть идеи по этому поводу?