Как переопределить TextBlock IsHitTestVisible через приложение Silverlight - PullRequest
0 голосов
/ 15 марта 2011

Я сохраню свои причины, почему они так поступают, так что ...

Я пытаюсь помешать TextBlocks сфокусироваться на моем приложении Silverlight.Кажется, что добавление сеттера для этого свойства в любой TextBlock внутри базового класса страницы моего приложения (наследование страниц) имеет некоторый смысл, но 1) я, вероятно, ошибаюсь, и 2) я не могу понять, что это правильно.

Я пробовал варианты добавления кода следующим образом:

        this.Style.Setters.Add(new Setter(TextBlock.IsHitTestVisibleProperty, false));

в конструктор базового класса Page моего приложения (наследуется непосредственно от Page) или в обработчике событий Loaded страницы.Но большинство вариаций на эту тему, похоже, не работают (как правило, кажется, что все правильные члены еще не существуют или XamlParseExceptions.

Это, вероятно, нелепо просто, но мой мозг, очевидно, очевидно. Любые идеи

1 Ответ

2 голосов
/ 15 марта 2011

Вы можете просто использовать неявный стиль

<Style TargetType="TextBlock">
   <Setter Property="IsHitTestVisible" Value="False" />
</Style>

Как правило, стили объединяются на верхнем уровне файла App.xaml, если в отдельных словарях ресурсов или вы можете просто добавить свой стиль туда.Я довольно новичок в Silverlight, поэтому я сообщаю только о том, что видел.

Предполагая, что у вас начинается пустой App.xaml, он может выглядеть примерно так:

<Application
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  x:Class="YourApp.App"
  mc:Ignorable="d">

    <Application.Resources>
        <ResourceDictionary>
            <Style TargetType="TextBlock">
                <Setter Property="IsHitTestVisible" Value="False" />
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Это довольно просто проверить, вы можете добавить цветовой установщик Foreground и посмотреть,все ваши текстовые блоки выбирают стиль.

...