Może głupie pytanie, ale kiedy dodaję element do projektu WPF, Visual Studio oferuje mi tylko UserControl, a nie Window. Czy to próbuje zachęcić mnie do zrobienia MVVM, czy moja konfiguracja jest zepsuta, czy jest jakiś inny powód, o którym nie pomyślałem?Dlaczego program Visual Studio nie chce, żebym dodał nowe okno do mojego projektu WPF?
Odpowiedz
Twój projekt prawdopodobnie jest skonfigurowany jako projekt WinForms lub ewentualnie jako biblioteka klas. Jeśli jest on utworzony jako jeden z tych elementów, można niestety dodać jedynie formant UserControl WPF.
Oczywiście, nie ma technicznych przyczyn tego ograniczenia, więc można skopiować/wkleić jeden z innego projektu lub odtworzyć/zmienić swój projekt na projekt WPF.
Nie jestem pewien, co dokładnie zmienisz, aby był to projekt WPF w oczach VS. Możesz spróbować utworzyć nowy projekt i przenieść go do bieżącego projektu. Najprawdopodobniej będziesz musiał edytować tekst na swoim pliku .csproj
.
Spróbuj uruchomić devenv /installvstemplates
, aby zresetować zainstalowane szablony. Używałem tego wcześniej, gdy kontrola użytkownika WPF w tajemniczy sposób zniknęła z mojej nowej listy.
W moim projekcie WPF, po kliknięciu przycisku Dodaj otrzymuję następujące opcje (w tym okno).
Więc obawiam się, że twoja konfiguracja.
Dodaj to do swojej pierwszej <PropertyGroup>
elementu w csproj:
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Oto przykład:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{24793F93-0FD8-4EC9-B1D2-028DB489B10D}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>nest_spawner</RootNamespace>
<AssemblyName>nest-spawner</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
Staje:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{24793F93-0FD8-4EC9-B1D2-028DB489B10D}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>nest_spawner</RootNamespace>
<AssemblyName>nest-spawner</AssemblyName>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
Dobra wskazówka! Działa dla mnie –
Próbowałem tego, ale jeśli dodaję ten tag, VS nie załaduje projektu, mówiąc mi, że "projekt o tej samej nazwie jest już otwarty w rozwiązaniu". Jakieś pomysły? –
Nie działa dla mnie. –
nie używać Visual Studio 2015 Microsoft Połącz ... , aby otworzyć projekt .. otwórz swój p rojekt w Visual Studio - Microsoft Visual Studio ,,, zobaczyć w pasku tytułowym
Dzięki, kopiować, wklejać to z innego projektu, a teraz zobaczyć taki sam jak Ty: {60dc8134-eba5-43b8-bcc9 -bb4bc16c2548}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ProjectTypeGuids> –
Benjol
Bez problemu. Nie ma za co. –
Spójrz na tę odpowiedź. Zawiera szczegółowe informacje dotyczące dodawania obsługi WPF do istniejącego projektu: http://stackoverflow.com/questions/450377/upgrading-a-winforms-app-to-wpf – santiagoIT