簡體   English   中英

如何訪問類支持的資源字典實例?

[英]How can I get access to a class backed resource dictionary instance?

我有一個資源字典,其中定義了幾個彼此無關的控件(TextBox 和 Button)。 我可以毫無問題地通過 TryFindResource 訪問控件。

接下來,我想將一個事件附加到按鈕上,因此我將 x:Class 添加到字典中並創建了一個支持類(基於我在此處找到的信息)並且事件正常運行。

我遇到的問題是:如何訪問支持加載 xaml 的已創建資源目錄(即我的類)? 最終我想在資源目錄中創建一些復雜的控件,並有一個簡單的函數,我可以在支持類中調用這些控件的列表,這樣我就可以將它們添加到我的窗口中,而不是需要為每個控件調用 TryFindResource。

我在類中有一個構造函數(並且調用了 InitializeComponent),但是自動創建的表示 TextBox 和 Button 的內部字段為空。 構造函數被提前調用(遠在我的 GUI 中的任何內容之前),但即使在調用窗口的 Loaded 事件時,幕后的 Connect 調用顯然還沒有完成。

我已經進行了大量搜索,但我發現的所有內容都停止在定義類點,並且在那之后沒有顯示任何用法。

我在這里吠錯樹了嗎? 我確定我誤解了這一切的功能以及它的能力,但看起來我應該能夠以某種方式獲得一個實例。

部分 XAML:

<ResourceDictionary x:Class="MM.Window.TitleBarControls"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    <MMM:ApplicationInformation x:Key="ApplicationInformation" />

    <Button x:Key="ButtonTest"
            x:Name="ButtonTest"
            Content="Button"
            Click="ButtonClickTest" />
</ResourceDictionary>

部分類:

    public partial class TitleBarControls : ResourceDictionary
    {
        public ObservableList<object> HeaderControls = new();

        public TitleBarControls()
        {
            TitleBarControlsMain = this;

            InitializeComponent();

            // ButtonTest is null here
            HeaderControls.Add(ButtonTest);
        }

        private void ButtonClickTest(object sender_, System.Windows.RoutedEventArgs e_)
        {
            int i = 1;
        }
    }

您示例中的按鈕是添加到ResourceDictionary本身的資源

從 XAML 標記中刪除x:Name (以避免混淆)並使用代碼隱藏中的索引器訪問它:

HeaderControls.Add(this["ButtonTest"]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM