我会保存为什么他们这样做是为了其他地方的咆哮,所以......
我正在尝试阻止TextBlocks在我的Silverlight应用中获得焦点。似乎在我的应用程序的基页类(Page-inheriting)中的任何TextBlock上为这个属性添加一个setter是有道理的,但是1)我可能错了,2)我似乎无法完全正确。< / p>
我尝试过添加代码的变体:
this.Style.Setters.Add(new Setter(TextBlock.IsHitTestVisibleProperty, false));
到我的应用程序的基页类的构造函数(直接从Page继承)或在页面Loaded事件处理程序中。但是关于该主题的大多数变体似乎都不起作用(通常看起来好像所有正确的成员都不存在或XamlParseExceptions。
这可能很荒谬,但显然我的大脑也是如此。有什么想法吗?
答案 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都选择了样式。