如何在代码后面的Common / StandardStyles.xaml中分配XAML Stype

时间:2013-05-27 12:12:09

标签: xaml visual-studio-2012 windows-runtime styles

我已经搜索并尝试了很多方法来做到这一点。通过像这样的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会导致灾难性异常。所以,要么我错过了一步,要么这是不正确的。

关于此的网络信息不多。

2 个答案:

答案 0 :(得分:1)

好的,谢谢Raghavendra,这确实指出了我正确的方向告诉我,我所尝试的事情并非偏离基础。

我最终得到的是:

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

Raghavendra是对的,您不需要使用资源管理器,也不需要在本地XAML中定义它。我使用上面的代码就可以通过在每个框架中分配电流来实现。

因此,我的例外是一个IDIOT(即我)。我应该使用我的TEXTBLOCK样式而不是我的TEXTBOX样式。为文本块指定文本框样式导致异常。

答案 1 :(得分:0)

试试这个:

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

您无需使用ResourceDictionary

修改

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

试试这个:

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