Geçerli bağlamda 'InitializeComponent' adı mevcut değil


383

Visual Studio 2010 SP1'de yeni bir proje oluşturup "WPF Uygulaması" nı seçip oluşturulan uygulamayı oluşturmaya çalışırsam hatayı alıyorum

'InitializeComponent' adı geçerli bağlamda mevcut değil.

Bu sabah mevcut projemi oluşturmaya çalıştığımda da benzer bir hata aldım. Dün, derlerken ve çalıştırırken sorun yaşamadım.

Yeni bir proje oluşturdum ve projeyi derlediğimde hatayı aldım. Projeyi bir iş arkadaşına gönderdim ve herhangi bir hata yapmadan derledi.

Yanlış olan ne?


3
Bu kullanıcı "hatası" çözülmesi kolay gibi görünüyor, sadece basit bir x: Sınıf uygun tanım. Her şey yolunda olana kadar, geliştirici daha fazla dikkat etmelidir, ancak bu hata değilse aynı hata mesajıyla bir hayalet hatası nedir? Ben 2012 çok farklı voodoo geçici çözüm bir çok okudum. VS çok açık bir hata mesajı ve DERS OF aynı mesaj ile hayalet hataları için bir hata düzeltme yardımcı olacaktır. Geliştiriciler 2012'den beri yapı yapılandırmasını dosyalardan, projelerden değiştiriyor, projeyi kopyalayıp yapıştırarak, App klasöründen dosyaları siliyor, VS'yi yeniden başlatıyor, vb. Bravo MS ... 4 yıllık bir hata ve hala yaşlanıyor!
juagicre

2
Bu sorunun gelecekteki okuyucuları için: Bu sorunun birçok olası kaynağı var gibi görünüyor. Benim durumumda ilk birkaç cevap yardımcı olmadı, ancak daha aşağı cevaplardan biri doğruydu.
MOnsDaR

@MOnsDaR Tasarımcı dosyasının ad alanı benim için sorun oldu.
Ctrl S

Bu birçok şey (Ad alanı yeniden adlandırılmış \ Sayfa türü - MSBuild) neden olabilir, ancak sonunda ben miras proje üzerinde neden oldu için çözüm bulduk. .Csproj dosyalarında, "ToolsVersion" ı 4'ten 15'e (VS 2017) değiştirmek zorunda kaldım.
MrMikeJJ

Yanıtlar:


737

Bunu birkaç kez gördüm ve buna neyin sebep olduğunu unutmaya devam ettim. Dosya arkasındaki kodumdaki ad alanını yeniden adlandırdığımda, ancak XAML'imde yeniden adlandırdığımda buna rastladım.

Aynı şeyi yapıp yapmadığınızı kontrol edin.

Her ikisi de kısmi bir sınıfın parçası olduklarından ad alanı ve sınıf adlarının eşleşmesi gerekir

namespace ZZZ
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
         //...
    }
}

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">

10
Teşekkürler Sean. Bu yanıtı buraya göndermek için geldim ama beni çoktan dövüyordun. Bu tam olarak olan şeydi ve sorunumu çözdü. Yorumunuz listelerde daha yüksek olmalı çünkü beni 15 dakika kurtarmış olacak.
Magnum

2
Sınıf isimleri aynı değilse aynı hatayı alırsınız
reggaeguitar

2
Cevap bu. Neden seçilmedi emin değilim, ama bu ve ben bu bazı Xamarin.Forms kodlama koştu.
Marcus Shockley

1
Yeniden düzenleme yaparken, yorumları ve dizeleri eklediğinizden emin olun (Visual Studio 2015)
Gabriel GM

3
Benim için (Xamarain.Forms'da) Azure'dan indirilen bir "Hızlı Başlangıç" projesi kullanarak, xmlns: x = " schemas.microsoft.com/winfx/2009/xaml " ve x: Class arasındaki beyaz boşluk / girintiydi sorun. Bunu sildim ve tekrar yazdım ve işe yaradı!
James

241

Bir xaml dosyası projeler arasında taşınırken .xaml dosyasının Derleme Eylemi de "Sayfa" olarak ayarlanmalıdır (en azından VS 2010'da).


11
Bana olan buydu. Teşekkürler!
Ignacio Soler Garcia

3
Bir kopyala yapıştırma işleminden sonra, xaml oluşturma işleminin sayfadan İçerik'e değişmesi
Roberto

4
Hala Visual Studio 2012'de (Güncelleme 2) oluyor
Gumo

8
Hala Visual Studio 2013'te oluyor
Chris Ray

7
Cidden ... neden Microsoft, neden? Benden / bizden nefret mi ediyorsun?
qwertoyo

106

Hata ayıklama modunda hata yok, ama olanlar için do Yayın modunda belirtilen hata var (ve henüz proje cezası çalışır), burada denemek için bir şey basittir:

  1. Sorun yaratan xaml.cs dosyasına karşılık gelen XAML dosyasını açın.
  2. Düzenleme yapın - herhangi bir yerde, herhangi bir yere boşluk eklemek gibi
  3. Dosyayı kaydedin ve kapatın

Bu yöntem VS 2015'te benim için çalıştı ve diğer kullanıcılara göre de 2017 ve 2019


3
Bugün benim Kahramanımsın. Teşekkür ederim
Peter pete

14
Çılgınca, bu VS2015 ile benim için çalıştı. Ve tüm XAML dosyalarındaki tüm hataları düzeltti. Bu gerçekten WTF anı.
William Denman

5
Dang, bununla tekrar yakıldım. Neyse ki zaten oy verdiğim ve yorum yaptığım aynı cevabı buldum. Gerçekten yapmalıyım ama bunu monitörümde post-it notu olarak yapmalıyım.
William Denman

3
VS2017 ile aynı ve bu düzeltti.
Hans

2
Hala VS2019'da çalışıyor ...
soulflyman

29
  1. Çözüm dizinine gidin
  2. \ Obj klasörünü sil
  3. Çözümü yeniden oluştur

Yeniden düzenleme sırasında bazı dosyaları / klasörleri yeniden adlandırdığım ve yeniden oluşturulması gereken * .g.cs dosyalarının yeniden adlandırılması sırasında bu hatayla karşılaştım.


Aynı problemim var gibi görünüyor, ama bu benim için işe yaramadı.
LuckyLikey

Bunu xaml ile x:Classeşleştiğini kontrol ettikten sonra yapın Namespace.Class.
Jake

tnx. bu basit numara bunu benim için yaptı.
gil adino

26

Bunun çok özel bir nedeni var ve bu proje ayarlarında. Bu genellikle bir .NET 2.0 sınıf kitaplığına veya projesine bir WPF denetimi / penceresi eklemeye çalıştığınızda olur. Bu hatanın nedeni, projenin bir WPF kontrolü veya penceresi oluşturduğunu bilmemesi ve bu nedenle onu bir C # 2.0 projesi olarak oluşturmaya çalışmasıdır.

Çözüm .csproj dosyasını düzenlemeyi içerir. Soruna neden olan projeye sağ tıklayın ve “Projeyi Kaldır” ı seçin. Yüklenmemiş projeye sağ tıklayın ve “.csproj Düzenle” yi seçin. .Csproj dosyası açılır ve XML'yi görebilirsiniz. aşağıdaki satırı arayın:

<Import Project=…..

Dosyanın sonuna yakın ve sahip olduğunuz tek satır muhtemelen

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

Bu, Visual Studio'ya projeyi .NET 2.0 projesi olarak oluşturmasını söyler. Yapmak istediğimiz şey, Visual Studio'ya bunun aslında bir WPF projesi olduğunu söylemek, bu nedenle aşağıdaki satırı eklememiz gerekiyor:

<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

Bu satır Visual Studio'ya projeyi bir WPF projesi olarak inşa etmesini söyleyecektir. Şimdi .csproj dosyanızın aşağıdaki gibi olması gerekir:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

.Csproj dosyasını kaydedin, Solution Explorer'da sağ tıklayın ve “Projeyi Yeniden Yükle” derlemesini seçin ve hepsi bu kadar!


1
Bu soruyu yazmadan önce bunu denedim ve yardımcı olmuyor. Yeni proje
derleyemem

1
Ben de denedim ve yardımcı olmadı. Yeni içe aktarmanın eklenmesi yeni bir uyarı ile sonuçlandı (aşağıya bakın), ancak orijinal hata hala orada. "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.WinFX.targets" tekrar içe aktarılamıyor. Zaten "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.NETFramework.targets (76,3)" dizinine içe aktarıldı. Bu büyük olasılıkla bir derleme yazma hatasıdır. Sonraki bu içe aktarma yoksayılır. "
user316117

Ben de denedim ve işe yaramadı ...?
Sizons

Teşekkür ederim, bu benim için miras aldığım bir projede düzeltildi.
MrMikeJJ

22

yanlışlıkla xaml tanımından sınıf başvurusunu sildiğimde bu benimle oldu:

Değiştirdim

<Window x:Class="myapp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

bununla ilk satır:

<RibbonWindow 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

Bu orijinal sorunun cevabı olmadığını biliyorum (çünkü bu proje başka bir makineye inşa ediyor), ancak hata mesajı aynıydı, bu yüzden belki bu duruma sahip birine yardım edeceğim.


bu benim sorunum değildi ama yerelleştirmeme yardımcı oldu. Daha sonra sınıf adı olmadan isim alanı vardı
Rivenfall

Bu benim için çalıştı. teşekkürler
Sinaesthetic

Bu benim sorunumu bulmama yardımcı oldu, benim durumumda x: Sınıf satırını
ekledim

18

Başka bir projeden bir sınıfı içe aktardığınızda veya xaml dosyasının yolunu veya xaml veya .cs dosyasının arkasındaki ad alanını değiştirdiğinizde bu hatayı alabilirsiniz.

Bir: Yeni projenizdeki ile aynı olmayan bir ad alanına sahip olabilir

namespace TrainerB.MVC.Forms
{
     public partial class AboutDeveloper : ContentPage
     {
          public AboutDeveloper()
          {
               InitializeComponent();
          }
     }
}

Gördüğünüz gibi içe aktarılan dosyadaki ad alanı eski proje adıyla başlar: "TrainerB" , ancak yeni projeniz farklı bir ada sahip olabilir, bu nedenle hem .xaml dosyasında hem de doğru yeni proje adıyla değiştirin. arkasındaki .cs dosyası.

İki:

.xaml dosyasının özelliklerini şu şekilde değiştirin:

Derleme Eylemi: Gömülü Kaynak

Özel Araç: MSBuild: UpdateDesignTimeXaml

Xaml dosya özellikleri

Xaml Ad Alanı Düzeltme 01

Xaml Ad Alanı Düzeltme 02


Aman Tanrım! bu çözüm için gerçekten teşekkür ederim. Orada bulunan her çözümü test ettim ve hiçbir şey işe yaramadı. Hile xamldosyanın özelliklerindeydi . +1
IgniteCoders

16

Xaml dosyasında emin olun

<Page x:Class="Project1.Page1" ...

'Project1' adıyla 'Page1' adıyla eşleşin


Bu benim sorunumu çözdü.
octavian

16

Tasarımcı dosyasını kontrol edin .

Aynı sorunu yaşadım. Benim durumumda, neden olmasıydı namespaceiçin FileName.Designer.cs (doğru) eşleşmedi namespacekullanılan FileName.cs .

Değişen namespacebir FileName.Designer.cs eşleşecek şekilde FileName.cs hemen sorun çözüldü.


14

(Çok fazla hatam olmasına rağmen kopyaladım ve bazı kodları yapıştırdım.) ad alanı XAML ve arkasındaki kod arasında eşleşmediğinde ortaya çıkabilir

ÖRNEĞİN

<UserControl x:Class="DockPanel.TreeView" />

ve arkadaki kod

namespace NotDockPanel

Bu, Tasarımcımın yanlış bir ad alanına sahip olduğunu keşfetmemi sağladı. Teşekkürler!
Ctrl S

13

Bir usercontrol yeniden adlandırırken bu karşılaştı. Sabitlediğim şekilde InitializeComponent'i yorumlamak, tüm isimlerin doğru olduğunu (xaml ve arkasındaki kod) doğrulamak, projeyi derlemek, InitializeComponent'i açmak, sonra tekrar inşa etmekti. Bu sorunun birkaç nedeni / çözümü olabilir gibi görünüyor, ama bu şekilde benim için yaptı.


1
Hiçbir şeyi yeniden adlandırmadım mı? Ancak bu çözüm benim için çalıştı. * .G.cs ve * .gics obj klasöründe eksikti, yorum yaptı ve projeyi oluştururken eksik dosyalar oluştu. Bu duruma nasıl geldiğinden emin değilim.
finlaybob

11

Yukarıdaki cevapların hiçbiri benim için işe yaramadı. Kopya olanlar hariç hepsini denedim. Ancak garip bir nedenden dolayı bu, Visual Studio 2015'teki çapraz platform projemde çalıştı:

  1. Solution Explorer'da soruna neden olan projeyi sağ tıklatın. Açılır menüde şunu seçin: Ekle -> Sınıf
  2. Platformlar arası -> Form Xaml Sayfası'nı seçin. Güzel Page1.cs standart adını koruyun ve Ekle'yi tıklayın.
  3. Önceki InitializeComponent () - sorununun herhangi bir nedenle nasıl kaybolduğuna dikkat edin.
  4. Yeni oluşturulan Page1.cs silin ve Visual Studio gayet iyi çalışıyor gibi programlamaya devam.

Bu benim için çalıştı. InitializeComponent () başarısız olmaya başladığında, bir kopyala & yapıştır ve sahip olduğum bir usercontrol yeniden adlandırmıştı.
Rafael Ventura

Bu düzeltmeyi nasıl gördünüz? Diğer her şeyi denedim ve bu işe yaradı. VS 2017 kullanıldığında sorun günceldir.
blearyeye

Harika, bu benim için çalıştı. Çok teşekkür ederim
IZI

9

Yukarıdaki cevapları, ad alanlarının eşleşmesi gerektiğine katılıyorum. Ancak, ad alanlarının eşleştiği yerde böyle bir sorun yaşadım.

Düzeltmek için, sadece XAML'deki ad alanını bir INCORRECT olanıyla değiştirdim, kaydettim, sonra tekrar CORRECT olanıyla değiştirdim. İşte bu kadar!


Bunu doğru cevaba bir yorum olarak
eklerdim

Bunun için teşekkürler! Her şeyi denemek için çıldırdıktan sonra benim için çalıştı. Benim çözümüm orijinal olarak hatasız inşa etti, daha sonra PC bir süre uyuduktan sonra tekrar denedi ve hatayı alıyordu. Belki uyku modu ile ilgili bir şey?
JeremyB

Aynı sorun ve çözümü yaşadım. IntelliSense ile bir ilgisi olduğuna inanıyorum. Xaml'de ad alanının değiştirilmesi muhtemelen IntelliSense db'deki ilgili parçaların güncellenmesini tetiklemiştir. Bu sadece bir tahmin.
FishySwede

8

Xamarin Forms kullanıyorsanız ve bir XAML dosyasını taşırsanız, dosyanın "derleme eylemi" değiştirilir. Xamarin Forms için "build action = Gömülü Kaynak" gerekir.

Visual Studio'da "eylem oluştur" uygulayın:

Select the XAML file -> Properties -> Build Action = Embedded Resource


Yaşasın efendim / hanımefendi!
naspinski

7

Yukarıdaki tüm önerileri deniyorum. Eğer başarı olmadan da denerseniz daha kolay bir yol olsun. Yeni bir page.xaml oluşturun, sonra yeni sınıf için kodunuzu kopyalayın ve sorunlu XAML sınıfı silin . Daha fazla zaman harcamayın.


7

Tüm çözümü boşaltın ve tekrar yükleyin. Ardından çözümü yeniden oluşturun. Bu benim için sorunu çözdü.


Teşekkürler benim için çalıştı!
Izion

6

Bu hatanın başka bir yaygın nedeni, bu konuda bir şey yapmış olmanızdır:

  1. Yeni UserControl oluşturmak için projedeki klasöre sağ tıklayın. Bu, klasörün ad alanındaki kullanıcı denetiminden türeyen bir sınıf ve xaml dosyası oluşturur.

  2. Daha sonra sınıfın ad alanını değiştirmeye karar verdiniz, çünkü gerçekten sadece kod organizasyonu için klasörleri kullanıyorsunuz. X: Class özniteliği otomatik olarak güncellenmez, böylece var olmayan bir sınıfı arar. Muhtemelen "x: sınıf türü bla.blaa.blaaa adlarında bulunamadı" gibi daha iyi bir hata mesajı kullanılabilir.


5

Bu soruna başka bir çözüm, sadece gömülü kaynak XAML özelliği -> Build Action değiştirmek için başka bir şey, kaydetmek ve hemen geri Gömülü Kaynak değiştirin. Hata giderilir.


İki kez çalıştı;)
Flou

4

Bunun farklı bir nedenden dolayı cevaplandığını biliyorum, ama bu çok isabetli bir yazı ve bir sınıf kütüphanesi ile aynı konuyla karşılaştım. Bu durumda, hem ad alanımdaki bir değişiklik olduğu ortaya çıktı ( burada bu yazıda cevaplandı ) ve derleyici InitializeComponent () yöntemini tanımlayan Window.gics'i yeniden oluşturamadı. Sınıf kitaplığı, csproj dosyasındaki WPF projeleri için ProjectTypeGuid değerini eksik olduğu için başarısız oldu. Bunun için talimatlar burada ve burada . Başkasının da aynı sorunla karşılaşması durumunda paylaşacağımı düşündüm. Bu durumda sadece ad alanını değiştirmek yeterli değildir.


3

Bir Nuget paket kaldırıcısı, App.xaml içindeki <Application> öğesindeki tüm öznitelikleri patlattığından bu bana oldu. Bu, uygulama sınıfı adını belirten x: Class özniteliğini içeriyordu. Böylece InitializeComponent () yöntemini içeren kısmi sınıf hiçbir zaman oluşturulmadı.

App.xaml kaynak kontrollü kopyaya geri döndürerek sorunu giderdim.


Eksik x: Sınıf özniteliği nedeniyle aynı hatayı aldım, ancak Nuget ile ilgisi yoktu. Bir şekilde ortadan kayboldu, muhtemelen bazı görsel stüdyo büyüsü.
Ismail Degani

3

Bu benim için çözdü.

App.xaml dosyasındaki kaynakları yorumlamıştım

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <!--<ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>-->
  </Application.Resources>
</Application>

Bu derleme yorum hatası düzeltildi.

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

Biraz daha derine inerek {Project} \ obj \ debug içindeki app.g.cs dosyasının, kaynağı yorumda bıraktığımda yalnızca aşağıdakileri içerdiğini gördüm.

/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
    if (_contentLoaded) {
        return;
    }
    _contentLoaded = true;
    System.Uri resourceLocater = new System.Uri("/MyApp;component/app.xaml", System.UriKind.Relative);

    #line 1 "..\..\..\App.xaml"
    System.Windows.Application.LoadComponent(this, resourceLocater);

    #line default
    #line hidden
}

3

Bunu internette bulanlar için. Derleme varsa Windows.csproj dosyasını kontrol edin. 2 giriş olmalı

<Page Include="YourFile.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>

Benim csproj <DependentUpon>YourFile.xaml</DependentUpon>bazı nedense eksikti ve bu benim için ne sabit olduğunu!
Isaac Baker

3

Ad alanları doğruysa aynı hata vardır,

Uygulamanızı kapatıp tekrar açmanız yeterlidir .

Bu sorununuzu çözebilir


açık ve kapalı görsel stüdyo mu demek istediniz?
LuckyLikey

Bazı durumlarda, XDesProc.exe (Microsoft Visual Studio XAML UI Tasarımcısı) Visual Studio'nun düzgün çalışmasını durdurur ve xaml dosyasını düzgün yüklemez. Visual Studio'yu yeniden başlatmak sorunumu çözdü. (Görev Yöneticisi'nde İşlemler'e gidebilir ve Visual Studio'yu yeniden başlatmadan yalnızca bu işlemi durdurabilirsiniz).
Syed Siraj Wajeed

Bunu VS2017'de keşfettim. Diğer her şeyi değiştirmişti ve ad alanları her yerde doğruydu ama InitializeComponent () çağrıları hata vardı ve xaml.cs dosyalarındaki kısmi anahtar kelimeler "kısmi sınıf sadece bir dosya var" gibi bir uyarı vardı. Çözümü kapatıp yeniden açtım ve her iki sorunun da kendiliğinden çözüldüğünü keşfettim.
Steve Crane

3

Bazı işlemlerden sonra .cs dosyasının ve .xaml dosyasındaki ad alanı farklı olabilir (xaml'de x: Class = "namespace.yourType" ifadesini arayın).

Onları aynı olacak şekilde düzeltin.


3

"Başlangıç ​​nesnesi" benim için bu hataya neden (ayarlanmadı) olduğunu keşfettim.

"Başlangıç ​​nesnesi" (Ayarlanmadı)


Soruda bahsedilen diğer tüm özellikler aynıydı?
marklark

2
Sorunun istisnanın nasıl ortaya çıktığı konusunda net olmadığı düşünüldüğünde kesin özellikler tam değildir. Ancak altta yatan semptom aynıdır, bu nedenle cevabımda yanlış bir şey görmüyorum. Niyetim, konuşmamda hiçbir cevap / yorum yardımcı olmadığından konuşmaya eklemekti. Sadece bilgi tabanına sık sık derlenmemiş derleme hataları için eklemeye çalışıyordum.
Rock

1
Teşekkürler! Sorunumu çözdü! Verilen seçeneği (görünüyor Başlangıç nesnesi ) Ben den MainWindow.xaml taşındığında otomatik olarak sıfırlanır oldu rootiçin Viewdizine.
AlexMelw

3

Bu, eksik 'InitializeComponent' ile ilgili problemin bir parçası olduğu için cevabımı buraya ekleyeceğim.

Ben de bu sorunu yaşıyordum ve burada ve Google'ın bulabileceği diğer tüm Forumlarda bulduğum her şeyi denedim, ancak hiçbiri sorunu benim için çözmedi. Herşeyi çalışmakla iki saat sonra nihayet nesi olduğunu anladım benim kurulum.

Projemizde MahApps'ın Metro bileşenlerini kullanıyoruz . Bana sorun çıkaran görünüm MetroWindow'dan miras alınan bir görünümdü:

<Controls:MetroWindow x:Class="ProjectNamespace.MyView"
                      xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                      ... >

Şimdi, statik kaynaklarımı

<Controls:MetroWindow.Resources>
    <prop:Resources x:Key="LocalizedStrings"/>
    ...
</Controls:MetroWindow.Resources>

Kaynakları bu şekilde tanımladım UserControl diğer tüm görüşlerimde bu şekilde , bu yüzden işe yarayacağını varsaydım.

Ancak, durum böyle değildi Controls:MetroWindow! Orada kesinlikle aşağıdaki gibi kaynak tanımı gerekli:

<Controls:MetroWindow.Resources>
    <ResourceDictionary>
        <prop:Resources x:Key="LocalizedStrings"/>
        ...
    </ResourceDictionary>
</Controls:MetroWindow.Resources>

Yani benim sorunum, özet olarak, eksik bir <ResourceDictionary>etiketti. Bunun neden 'InitializeComponent' hatasını ürettiğini gerçekten bilmiyorum ve garip bir şekilde her makinemde üretmedi, ancak bu şekilde düzelttim. Umarım bu yardımcı olur (bu sorunla karşılaşan kişilerin% 0,001'i).


2

Bu sorunla yeni karşılaştım ve projemin ağda depolanan kullanıcı klasörümde saklandığı ve anlık bir ağ kesintisi yaşadığımız ortaya çıktı. Bir yapı yaptım; dosyalarımın editör dışında değiştirildiğinden şikayet ettiler InitializeComponent().

BTW, merak ediyorsanız, bir ağ sürücüsünden bir şey geliştirmek kötü bir uygulamadır. .NET'in yönetilen kodundan yararlanmaya çalışırken özellikle sorunlu hale gelir; deneyimlerime göre, her inşa ettiğinizde korkuyor. Bu küçük fırlatma projesini uygun klasöre koymayı unuttum ve bedelini ödemeyi bitirdim.


2

Olası başka bir açıklama x86'ya karşı inşa ettiğinizdir. Çözümünüzü sağ tıklayın ve Configuration Manager'ı seçin. Herhangi bir CPU yerine x86'ya karşı bina yapıp yapmadığınızı görün.


2

Bunun daha eski bir soru olduğunun farkındayım, ama benzer bir sorun yaşıyorduk. VS2012 kullanarak bir proje oluşturabildik, ancak komut satırından msbuild kullanamadık. .Proj dosyasına gittim ve varsayılan "PropertyGroup" bölümü altında "ProjectTypeGuids" için bir kayıt olmadığını fark ettim, bu yüzden bu ekledim:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

WPF için proje GUID'i. Sonra UserControl sildi ve yeniden ekledi ve çalışmaya başladı. Bu son adımı yapmak zorunda olduğumdan emin değilim, ama şimdi benim için çalışıyor.


2

Projeler arasında .xaml ve .cs dosyalarını kopyaladıktan sonra bir nedenden dolayı derleme işlemi bazen değişiyor. Lütfen .xaml dosyanızın derleme işleminin Sayfa olduğundan emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.