如何使用xaml资源字典中定义的样式?
问题描述:
我有一个IMultiValueConverter
动态创建TextBlock
控件。问题是它没有样式。如何使用xaml资源字典中定义的样式?
如何告诉我的新TextBlock
使用在我的XAML资源字典中定义的样式?
答
请参见下面的问题:how to use DynamicResource in the code behind?
使用SetResourceReference
,它等同于使用DynamicResource
在XAML
所以,如果你Style
有重点myTextBlockStyle
TextBlock textBlock = new TextBlock();
textBlock.SetResourceReference(FrameworkElement.StyleProperty, "myTextBlockStyle");
答
我从来没有尝试过在此之前,并根据你的转换器是干什么的,我想如果你的XAML资源字典是外部的,然后将其链接到您的显示的TextBlocks窗口:
<Window.Resources>
<ResourceDictionary Source="[the path to the resource dictionary]"/>
</Window.Resources>
然后在您的文本块中,确保它们具有在资源字典中定义的样式附件。如果文本块是在后面的代码中创建的,我相信你应该能够使用FindResource来查找由资源字典链接的样式。然后做这样的事情:
textBlock1.Style = (Style)FindResource("myTextBlockStyle");
我已经有我的资源字典链接像你所显示。我试图使用特定的样式(基于关键字)来创建通过“IMultiValueConverter”动态创建的“TextBlock”。 – gcso
我刚刚在您评论的同时更新了我的答案。尝试FindResource方法,看看它是否有助于找到你的风格。我只在一个元素中嵌入了多值转换器,例如连接名字和姓氏,我没有使用它们来动态创建控件。 – Josh