WPF 使用后台定义与使用(模板)资源

在WPF开发中,我们经常定义资源的方式是通过在App.XAML文件的Resource节点、单独页面(Page、Window、UserControl等)的Resource下、元素节点下的Resource里以及单独添加资源字典(Dictionary.xaml)文件进行定义。其效果如下图所示。

这些定义,后台可以通过元素的FindResource方法检索Key找到定义的资源。

但是有些时候,我们资源没必要定义到XAML文件中,需要直接定义到CS文件中,通过后台代码直接获取。那么我们要如何定义其资源呢。

应用范围:在我们需要分离项目时,在某个DLL文件(自定义控件库)中,不方便使用APP文件中的资源。我们又很想通过后台来动态切换资源时。

下面我通过定义DataTemplate资源来实现。

原来XAML中定义格式:

<DataTemplate x:Key="NodeDataTemplate" >
    <views:NodeDataView />
</DataTemplate>

<DataTemplate x:Key="EdgeDataTemplate">
    <views:EdgeDataView />
</DataTemplate>

在CS文件定义:

 public class TTResources
    {

        public static DataTemplate EdgeDataTemplate { get; } = new DataTemplate { VisualTree = new FrameworkElementFactory(typeof(Views.EdgeDataView)) };

        public static DataTemplate NodeDataTemplate { get; } = new DataTemplate { VisualTree = new FrameworkElementFactory(typeof(Views.NodeDataView)) };
    }

如此,我们可以在后台轻松的使用静态资源【TTResources.EdgeDataTemplate 】。也可以通过【x:Static】的形式在XAML文件中使用资源。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章