2013-05-27 39 views
0

我搜索并尝试了许多操作来完成此操作。我有一个成功做XAML代码像这样绑定到多个XAML框架风格,样式的名称是ViewPersonTextboxDataStyle:如何从后面代码中的Common/StandardStyles.xaml中指定XAML Stype

<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会导致一个灾难性异常(Catastrophic Exception)。所以,要么我错过了一个步骤,要么这是不正确的。

没有很多关于这方面的净信息。

回答

0

试试这个:

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

你不必使用资源字典

编辑:

this.Resources指Page.Resources(即万一ViewPersonTextboxDataStyle在页面定义我们用这个资源)

试试这个:

textBlock.style = App.Current.Resources["ViewPersonTextboxDataStyle"] as Style; 
+0

这仍然给[System.Runtime.InteropServices.COMException] = {“错误HRESULT E_FAIL已从调用COM组件返回。”} – RallyRabbit

+0

实际上,这是因为this.Resources没有密钥。 – RallyRabbit

+0

@RallyRabbit:我编辑了我的答案。请检查 – Raghavendra

1

好的,谢谢你Raghavendra,这确实指出我在正确的方向告诉我,我正在尝试的事情没有脱离基地。

我结束了是:

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

Raghavendra是正确的,你不需要使用资源管理器,你也不必在本地XAML来定义它。无论如何,我使用上面的这一行来完成每一帧的分配。

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

相关问题