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