如何在Silverlight应用程序中覆盖TextBlock IsHitTestVisible

时间:2011-03-15 20:27:05

标签: silverlight-4.0 textblock

我会保存为什么他们这样做是为了其他地方的咆哮,所以......

我正在尝试阻止TextBlocks在我的Silverlight应用中获得焦点。似乎在我的应用程序的基页类(Page-inheriting)中的任何TextBlock上为这个属性添加一个setter是有道理的,但是1)我可能错了,2)我似乎无法完全正确。< / p>

我尝试过添加代码的变体:

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

到我的应用程序的基页类的构造函数(直接从Page继承)或在页面Loaded事件处理程序中。但是关于该主题的大多数变体似乎都不起作用(通常看起来好像所有正确的成员都不存在或XamlParseExceptions。

这可能很荒谬,但显然我的大脑也是如此。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用隐式样式

<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颜色设置器,看看是否所有TextBlock都选择了样式。