2011-03-30 31 views
1

我有WPF項目和App.xaml中定義的其他文件中使用的一些資源。當我嘗試將App.xaml移動到子目錄時,設計師不再能夠找到這些資源。由於我使用'Startup'事件而不是'StartupUri',因此我的項目仍在編譯。如何告訴設計師在哪裏搜索資源?當App.xaml位於項目的根目錄時,它如何知道它們在哪裏?如何移動App.xaml而不是打破設計器?

更新: 項目文件:

的App.xaml:

<Application x:Class="WpfApplication1.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      Startup="startup"> 
    <Application.Resources> 
     <SolidColorBrush Color="LightGray" x:Key="brush" /> 
    </Application.Resources> 
</Application> 

App.xaml.cs

namespace WpfApplication1 
{ 
    public partial class App : System.Windows.Application 
    { 
     private void startup(object sender, System.Windows.StartupEventArgs e) 
     { 
      new MainWindow().Show(); 
     } 
    } 
} 

MainWindow.xaml:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Height="300" Width="300" Background="{StaticResource brush}" /> 

MainWindow.xaml.cs

namespace WpfApplication1 
{ 
    public partial class MainWindow : System.Windows.Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

更新2: 上傳壓縮解決方案http://zalil.ru/30771604(下載將自動開始)

鏡:http://www.speedyshare.com/files/27697250/WpfApplication1.zip

+0

我看到我做了不同的事情。感謝您的來源。我會修補更多。 – 2011-03-30 22:22:05

+0

我已經更新了我的答案。希望有所幫助! – 2011-03-30 22:32:34

+0

你安裝了SP1嗎? – 2011-03-30 23:26:31

回答

0

我不能重複的問題我的結局。這是我嘗試過的:

我在App.xaml的資源中創建了一個具有樣式的應用程序。我將App.xaml移到了一個子目錄中。我有另一個窗口,它使用App.xaml資源中定義的樣式(他駐留在不同的目錄中),它能夠很好地解決它。我在我原來的StartupUri的開頭添加了.. \。

我做了一些搜索,你使用的是什麼版本的Visual Studio?顯然,有可能是在VS2008與您問題相關的錯誤:

http://bengribaudo.com/blog/2010/08/19/106/bug-single-application-resources-entry-ignored

他說此錯誤解決方法是設置x:Name屬性上Application。希望有所幫助!

編輯:我也試過處理Startup事件,而不是使用StartupUri,它仍然工作正常。

public partial class App : Application 
{ 
    private void Application_Startup(object sender, StartupEventArgs e) 
    { 
      new MainWindow().Show(); 
    } 
} 

編輯部分2:

好,我所包圍的內部的ResourceDictionary的SolidColorBrush這樣:

<ResourceDictionary> 
    <SolidColorBrush Color="LightGray" x:Key="brush" /> 
</ResourceDictionary> 

和窗口拿起刷子。設計師不喜歡它,但是當我從StaticResource更改爲DynamicResource時,它停止抱怨。

編輯3:

我只是想到了一些東西。你有沒有安裝VS2010 SP1?它與設計師一起修復了some bugs

對不起,我的編輯號碼2沒有按預期工作。我注意到我的藍色曲線在xaml中消失了,但我沒有檢查設計師。 x__x

+0

奇怪,我使用的是VS 2010,你做了我想要的,等一下,我會上傳測試項目。 – Poma 2011-03-30 22:14:37

+0

上傳的解決方案歸檔。請檢查出來。 – Poma 2011-03-30 22:21:16

+0

似乎它不適用於我。添加了ResourceDictionary,並將StaticResource改爲了DynamicResource,程序仍然運行成功,但設計者不能解決資源問題。你確定你沒有改變別的東西嗎? – Poma 2011-03-30 22:38:35

1

1。 App.xaml中移動你想要的位置

App.xaml Moved

2。重構你App.xaml.cs命名空間,以適應新的變化:

Refactor its namespace

3。重建您的解決方案。

[4]。轉到您的項目特性,並在新位置將啓動對象設置爲您的App.xaml文件。

set the Startup object to your App.xaml

[5]。運行你的應用程序,它應該成功工作:)

+0

這裏同樣的情況,項目構建,但設計器不起作用。 – Poma 2011-03-30 22:18:28