Однако попытка изменить строку или число приведет к ошибке
blockquote>TypeError: invalid assignment to const
Это именно то, что написано в документации - идентификатор переменной нельзя переназначить [115 ].
Идентификатор
const
всегда будет указывать на одно и то же место. Тем не менее, содержание этого места может измениться.Если это место является объектом, существует несколько способов его изменить (
Object.prototype.assign
, ключевое словоdelete
, назначение свойства). Для примитивных типов просто нет способа разыменовать («захватить») содержимое, кроме как путем изменения их идентификаторов (что недопустимо дляconst
). Вот почему постоянные примитивы являются неизменными, а постоянные объекты - нет.
Разобрался ... у меня ушло около 6 часов ...
Почему-то я не могу установить значение напрямую, используя Value.Setter. Если я определю содержание для всплывающей подсказки как статический ресурс, а затем установлю его в свойстве Style объекта DataGrid.RowStyle, оно будет работать.
Итак, стиль строки сетки данных выглядит следующим образом:
<Style TargetType="{x:Type dg:DataGridRow}">
<Setter Property="ToolTip" Value="{StaticResource resKWIC}">
</Setter>
</Style>
</dg:DataGrid.RowStyle>
И ресурс
<Window.Resources>
<StackPanel x:Key="resKWIC">
<TextBlock>f1</TextBlock>
<TextBlock>f2></TextBlock>
</StackPanel>
</Window.Resources>
Спасибо!
Не уверен, что вы можете сделать это через XAML.
Более простой способ - просто обработать событие LoadingRow. В xaml есть что-то вроде:
<dg:DataGrid Name="dgResults" AutoGenerateColumns="True"
LoadingRow="dgResults_LoadingRow"
ItemsSource="{Binding ListOfStrings}" />
Тогда в коде позади
void dgResults_LoadingRow(object sender, DataGridRowEventArgs e)
{
DataGridRow row = e.Row;
row.ToolTip = row.DataContext as string;
}
Очевидно, вам придется изменить код в зависимости от того, как вы заполняете данные в сетке данных. Это также не проверено =)
There's no need for the ControlTemplate
. If you want the StackPanel
in the ToolTip
, just set it as:
<Setter Property="ToolTip">
<Setter.Value>
<StackPanel>
<TextBlock>txt1</TextBlock><TextBlock>txt2</TextBlock>
</StackPanel>
</Setter.Value>
</Setter>
Ключ должен использовать Property ToolTipService.ToolTip вместо ToolTip - например:
<Setter Property="ToolTipService.ToolTip" Value="My Tooltip"/>