![](/img/trans.png)
[英]How do I upload images to the SQLite database, via a dialog box, and output the image to XAML?
[英]How do I set my main application theme on a dialog box, without setting it explicitly in the XAML?
更新
我很尷尬地說我犯了一個錯誤。 錯誤是我的主題沒有設置我用來測試的元素的樣式,所以當然我沒有看到應用的樣式。
但是,回答這個問題的答案確實顯示了如何將資源從一個UserControl顯式設置為另一個...這很有趣。
當我按照下面描述的方式在應用程序上設置資源時,它確實隱式地在生成的應用程序中設置了所有用戶控件主題。
我正在使用一個主題,在我的主Application類上設置為ResourceDictionary。 我的主窗口我猜是隱含地使用這個主題來塑造自己。
<Application>
<Application.Resources>
<ResourceDictionary Source="Themes/ExpressionDark.xaml" />
以下注釋是錯誤的,並且所有內容都是隱式設置的
然而,當我顯示一個對話框時,它沒有設置樣式。
DialogBox dialog = new DialogBox();
dialog.ShowDialog();
有沒有辦法隱式地執行此操作而不在DialogBox的XAML中明確指定樣式?
編輯
我嘗試通過以下方式設置資源。 他們沒有工作。
Window main = App.Current.Windows[0];
dialog.Resources = main.Resources;
dialog.Owner = main;
還嘗試從主App中設置...這是定義原始資源的位置。
dialog.Resources = App.Current.Resources;
你可以實現如下:
dialog.Resources.MergedDictionaries.Add( this.Resources.MergedDictionaries[0] );
另一種可能性是從app加載它們(但我不喜歡):
ResourceDictionary dict = Application.LoadComponent( new Uri( "<library>;component/Themes/<theme>.xaml", UriKind.Relative ) ) as ResourceDictionary;
dialog.Resources.MergedDictionaries.Add( dict );
您可以以這種或那種方式傳輸資源,或者如果您不需要指定對話框特定資源,則只需將對話框的資源設置為主窗口的資源:
public Dialogue(Window owner)
{
this.InitializeComponent();
Owner = owner;
Resources = Owner.Resources;
}
(因為它是對話我也設置了Owner
屬性)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.