2011-03-15 30 views
0

我会救我,他们为什么做它在其他地方这样的咆哮,所以......如何覆盖的TextBlock IsHitTestVisible跨越Silverlight应用程序

我试图避免的TextBlocks来自全国各地我的Silverlight应用程序获取焦点。似乎在我的应用程序的基本页面类(页面继承)中的任何TextBlock上为此属性添加setter会有一定意义,但1)我可能是错误的,2)我似乎无法完全正确地使用它。

我试过在添加这样的代码变化:

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

到我的应用程序的基础Page类的构造函数(直接从页面继承),或在网页加载事件处理程序。但就这一主题最变化似乎不工作(通常似乎好像所有正确的成员还不存在或XamlParseExceptions。

这也可能是太简单了,但这么被我的大脑,显然,任何想法?

回答

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> 

这是很简单的测试,你可以添加一个前景颜色设置器,看看是否所有的TextBlocks的回暖样式。

+0

谢谢Marc。请原谅我的XAML noobiness,但是我工作的基本页面类是一个cs文件。所有页面如何继承您所布置的XAML? – 2011-03-15 20:40:16

+0

您可能已经或可能没有风格资产。这些通常在app.xaml文件中合并。我会尝试一个基本的编辑来解决这个问题。 – Marc 2011-03-15 20:59:10

+0

将它放在app.xaml中看起来会有所斩获,谢谢! – 2011-03-15 21:28:24