0

我已经搜索并尝试了很多方法来做到这一点。我有一个通过执行这样的 XAML 代码成功绑定到多个 XAML 框架的样式,样式的名称是 ViewPersonTextboxDataStyle:

<TextBox Grid.Row="5" Grid.Column="1" Name="textboxName" Text="{Binding textboxName}" Margin="5,5,5,5" Style="{StaticResource ViewPersonTextboxDataStyle}"/>

所以,当我到达另一个我想在后面的代码中创建网格行和定义的框架时,我尝试了这个,我认为这是正确的:

var resourceDictionary = new ResourceDictionary()
{
    Source = new Uri("ms-appx:///Common/StandardStyles.xaml", UriKind.Absolute)
};
var style = resourceDictionary["ViewPersonTextboxDataStyle"] as Style;
textBlock.Style = resourceDictionary["ViewPersonTextboxDataStyle"] as Style;

所以此时,我可以看到在资源字典中找到了样式,因为样式已正确填充。但是分配给 textBlock.Style 会导致灾难性异常。所以,要么我错过了一个步骤,要么这是不正确的。

这方面的网络信息不多。

4

2 回答 2

1

好的,谢谢 Raghavendra,这确实为我指明了正确的方向,告诉我我正在尝试的事情并没有偏离基础。

我最终得到的是:

style = Application.Current.Resources["ViewPersonTextDataStyle"] as Style;
textBlock.Style = style;

Raghavendra 是对的,你不需要使用资源管理器,也不需要在本地 XAML 中定义它。无论如何,我使用上面的行通过在我的每一帧中分配电流来做到这一点。

因此,我的例外是白痴(即我)。我应该一直使用我的 TEXTBLOCK 样式而不是我的 TEXTBOX 样式。将文本框样式分配给文本块导致异常。

于 2013-05-27T17:27:49.313 回答
0

尝试这个:

textBlock.style = this.Resources["ViewPersonTextboxDataStyle"] as Style;

您不需要使用 ResourceDictionary

编辑:

this.Resources 是指 Page.Resources (如果 ViewPersonTextboxDataStyle 在 Page.Resources 中定义,我们使用它)

试试这个:

    textBlock.style = App.Current.Resources["ViewPersonTextboxDataStyle"] as Style;
于 2013-05-27T13:31:24.600 回答