Как указать ToolTip для управления в Стиле от XAML?

Однако попытка изменить строку или число приведет к ошибке TypeError: invalid assignment to const

Это именно то, что написано в документации - идентификатор переменной нельзя переназначить [115 ].

Идентификатор const всегда будет указывать на одно и то же место. Тем не менее, содержание этого места может измениться.

Если это место является объектом, существует несколько способов его изменить (Object.prototype.assign, ключевое слово delete, назначение свойства). Для примитивных типов просто нет способа разыменовать («захватить») содержимое, кроме как путем изменения их идентификаторов (что недопустимо для const). Вот почему постоянные примитивы являются неизменными, а постоянные объекты - нет.

14
задан Gishu 15 February 2010 в 10:53
поделиться

4 ответа

Разобрался ... у меня ушло около 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>

Спасибо!

26
ответ дан 1 December 2019 в 08:17
поделиться

Не уверен, что вы можете сделать это через 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;
}

Очевидно, вам придется изменить код в зависимости от того, как вы заполняете данные в сетке данных. Это также не проверено =)

0
ответ дан 1 December 2019 в 08:17
поделиться

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>
0
ответ дан 1 December 2019 в 08:17
поделиться

Ключ должен использовать Property ToolTipService.ToolTip вместо ToolTip - например:

<Setter Property="ToolTipService.ToolTip" Value="My Tooltip"/>
6
ответ дан 1 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: