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文件中使用資源。

 

 

 

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