[英]How can i get my usercontrol to use the styles in a resource dictionary held in a seperate class library?
[英]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.