Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zestaw SDK do aplikacji systemu Windows jest kolejną ewolucją na platformie deweloperów aplikacji Windows. W tym temacie pokazano jednak, jak można używać interfejsów API Zestaw SDK do aplikacji systemu Windows (i interfejsów API środowisko wykonawcze systemu Windows) w aplikacji Windows Presentation Foundation (WPF)!
- W wielu przypadkach należy ponownie utworzyć aplikację WPF w postaci aplikacji WinUI 3. Jedną z zalet przejścia na WinUI jest uzyskanie dostępu do Fluent Design System (zobacz również Projektowanie i kodowanie aplikacji Windows). WinUI jest częścią Zestaw SDK do aplikacji systemu Windows — więc oczywiście aplikacja WinUI może korzystać z innych funkcji i interfejsów API Zestaw SDK do aplikacji systemu Windows, jak również. W tym temacie nie opisano procesu migracji aplikacji WPF do interfejsu WinUI.
- Jeśli jednak okaże się, że używasz funkcji WPF, które nie są jeszcze dostępne w systemie WinUI, nadal możesz używać funkcji Zestaw SDK do aplikacji systemu Windows (takich jak cykl życia aplikacji, mrT Core, DWriteCore i inne) w aplikacji WPF. W tym temacie pokazano, jak to zrobić.
W przypadku, gdy nie masz jeszcze istniejącego projektu WPF — lub chcesz przećwiczyć ten proces — ten temat zawiera kroki tworzenia projektu WPF, dzięki czemu można wykonać czynności i skonfigurować go do wywoływania interfejsów API Zestaw SDK do aplikacji systemu Windows.
Wymagania wstępne
- Instaluj narzędzia dla Zestaw SDK do aplikacji systemu Windows.
- W tym temacie opisano zarówno aplikacje WPF bez pakietów, jak i z pakietami. Jeśli aplikacja WPF jest rozpakowana (co domyślnie dotyczy aplikacji WPF), upewnij się, że wszystkie zależności dla aplikacji rozpakowanych są zainstalowane (zobacz przewodnik wdrażania Zestaw SDK do aplikacji systemu Windows dla aplikacji zależnych od platformy pakowanych z lokalizacją zewnętrzną lub rozpakowanych). Aby to zrobić, należy odwiedzić Najnowsze pliki do pobrania dla Zestaw SDK do aplikacji systemu Windows, a następnie pobrać, rozpakować oraz uruchomić jeden ze stabilnych Runtime.
Ważne
Wersja Runtime, którą instalujesz, musi być zgodna z wersją pakietu NuGet Microsoft.WindowsAppSDK, który zostanie zainstalowany w późniejszym kroku.
Aby uzyskać więcej informacji na temat terminów bez opakowania i w opakowaniu, zobacz Zalety i wady opakowywania aplikacji.
Utwórz projekt WPF, jeśli jeszcze go nie masz
Jeśli masz już projekt WPF, możesz przejść do następnej sekcji.
- W Visual Studio utwórz nowy projekt WPF Application (który jest projektem .NET). Należy zachować ostrożność podczas wybierania szablonu projektu o dokładnej nazwie WPF Application, a nie WPF App (.NET Framework).
- Nadaj project nazwę i zaakceptuj wszystkie opcje domyślne.
Masz teraz projekt, który buduje rozpakowaną aplikację WPF.
Konfigurowanie projektu WPF pod kątem obsługi Zestaw SDK do aplikacji systemu Windows
Najpierw zmodyfikujemy plik project.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy project i wybierz pozycję Edytuj plik Project.
Ten krok umożliwia wywoływanie interfejsów API środowisko wykonawcze systemu Windows (WinRT (w tym interfejsów API Zestaw SDK do aplikacji systemu Windows). Wewnątrz elementu PropertyGroup jest element TargetFramework , który jest ustawiony na wartość taką jak net6.0. Dołącz do tej wartości platformy docelowej moniker (w szczególności Target Framework Moniker). Na przykład użyj następującej wartości, jeśli aplikacja jest przeznaczona dla Windows 10 w wersji 2004:
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>Ponadto wewnątrz elementu PropertyGroup dodaj element RuntimeIdentifiers, jak pokazano poniżej. Jeśli docelowym środowiskiem jest .NET 8 lub nowszy, użyj wartości
win-x86;win-x64;win-arm64.<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>Domyślnie aplikacja WPF jest rozpakowana (co oznacza, że nie jest zainstalowana przy użyciu pliku MSIX). Rozpakowana aplikacja musi zainicjować środowisko uruchomieniowe Zestaw SDK do aplikacji systemu Windows przed użyciem dowolnej innej funkcji Zestaw SDK do aplikacji systemu Windows. Możesz to zrobić automatycznie, gdy aplikacja zostanie uruchomiona za pomocą automatycznej inicjalizacji. Aby ustawić poprawnie właściwość projektu (również wewnątrz elementu
WindowsPackageType), postępuj w następujący sposób:<WindowsPackageType>None</WindowsPackageType>Jeśli masz zaawansowane potrzeby (takie jak niestandardowa obsługa błędów lub załadowania określonej wersji Zestaw SDK do aplikacji systemu Windows), zamiast auto-initialization możesz jawnie wywołać interfejs API programu rozruchowego — aby uzyskać więcej informacji, zobacz Użyj środowiska uruchomieniowego Zestaw SDK do aplikacji systemu Windows dla aplikacji spakowanych z lokalizacją zewnętrzną lub bez pakietu.
Zapisz i zamknij plik project.
Następnie zainstalujemy pakiet NuGet Zestaw SDK do aplikacji systemu Windows w projekcie.
- W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł Dependencies węzła projektu, a następnie wybierz Zarządzaj pakietami Nuget... .
- W oknie NuGet Menedżer pakietów wybierz kartę Przeglądaj i zainstaluj Ostatnią stabilną wersję pakietu Microsoft.WindowsAppSDK.
Korzystanie z niektórych funkcji Zestaw SDK do aplikacji systemu Windows w aplikacji WPF
Ta sekcja zawiera bardzo prosty przykład wywoływania interfejsów API Zestaw SDK do aplikacji systemu Windows z aplikacji WPF. Używa funkcji MRT Core (zobacz Zarządzanie zasobami za pomocą narzędzia MRT Core). Jeśli ten przykład działa dla twojego projektu WPF (a jeśli utworzyłeś nowy dla tego przewodnika, wtedy tak będzie), możesz postępować zgodnie z tymi krokami.
Dodaj następujący znacznik do
MainWindow.xaml(możesz wkleić go w katalogu głównym Grid):<StackPanel> <Button HorizontalAlignment="Center" Click="Button_Click">Click me!</Button> <TextBlock HorizontalAlignment="Center" x:Name="myTextBlock">Hello, World!</TextBlock> </StackPanel>Teraz dodamy kod, który używa klasy ResourceManager w Zestaw SDK do aplikacji systemu Windows w celu załadowania zasobu tekstowego.
Dodaj nowy element plik Resources (.resw) do twojego projektu (pozostaw go z domyślną nazwą Resources.resw).
Po otwarciu pliku zasobów w edytorze utwórz nowy zasób ciągu z następującymi właściwościami.
- Nazwa: Komunikat:
- Wartość: Witaj, zasoby!
Zapisz i zamknij plik zasobów.
W
MainWindow.xaml.csdodaj następującą procedurę obsługi zdarzeń:
private void Button_Click(object sender, RoutedEventArgs e) { // Construct a resource manager using the resource index generated during build. var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager(); // Look up a string in the resources file using the string's name. myTextBlock.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString; }Skompiluj project i uruchom aplikację. Kliknij przycisk, aby wyświetlić wyświetlany ciąg
Hello, resources!.
Wskazówka
Jeśli w czasie wykonywania zostanie wyświetlone okno komunikatu wskazujące, że aplikacja potrzebuje konkretnej wersji środowiska uruchomieniowego aplikacja dla systemu Windows i pyta, czy chcesz ją zainstalować teraz, a następnie kliknij pozycję Yes. To przeniesie Cię do Najnowsze pobrania Zestaw SDK do aplikacji systemu Windows. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne powyżej.
Zobacz również Runtime architecture aby dowiedzieć się więcej o Framework zależności pakietu używanej przez aplikację podczas korzystania z Zestaw SDK do aplikacji systemu Windows oraz dodatkowych składników wymaganych do pracy w niezapakowanej aplikacji.
Pakowanie i wdrażanie aplikacji WPF za pomocą pliku MSIX
Niektóre funkcje i interfejsy API Windows wymagają, aby aplikacja miała tożsamość pakietu w czasie wykonywania (innymi słowy, aplikacja musi być zapakowana). Aby uzyskać więcej informacji, zobacz Funkcje wymagające tożsamości pakietu. Pakowanie MSIX jest również wymagane w przypadku przesyłania plików MSIX do Microsoft Store.
- W Eksplorator rozwiązań w programie Visual Studio kliknij prawym przyciskiem myszy rozwiązanie i wybierz Dodaj>Nowy Projekt....
- W oknie dialogowym Dodaj nowy projekt wyszukaj packaging, wybierz projekt C# Windows Application Packaging Project i kliknij Dalej.
- Nadaj projektowi nazwę i kliknij Utwórz.
- Chcemy określić, które aplikacje w rozwiązaniu mają być uwzględnione w pakiecie. W projekcie pakowania (nie w projekcie WPF) kliknij prawym przyciskiem myszy w węzeł Dependencies i wybierz Dodaj odwołanie do projektu....
- Na liście projektów w rozwiązaniu wybierz projekt WPF, a następnie kliknij pozycję OK.
- Rozwiń węzeł Dependencies>Applications i upewnij się, że projekt WPF jest przywołany i wyróżniony pogrubioną czcionką. Oznacza to, że będzie on używany jako punkt wyjścia dla pakietu.
- Kliknij prawym przyciskiem myszy projekt pakowania, a następnie wybierz pozycję Ustaw jako projekt startowy.
- Kliknij prawym przyciskiem myszy WPF project i wybierz pozycję Edytuj plik Project.
- Usuń
<WindowsPackageType>None</WindowsPackageType>, zapisz i zamknij. - Na liście rozwijanej Platformy rozwiązań wybierz x64 (zamiast Any CPU).
- Upewnij się, że możesz skompilować i uruchomić.
Teraz, gdy spakowałeś aplikację WPF, możesz wywoływać interfejsy API wymagające tożsamości pakietu. W MainWindow.xaml.cszmodyfikuj procedurę obsługi zdarzeń, aby wyglądała następująco:
private void Button_Click(object sender, RoutedEventArgs e)
{
var notification = new AppNotificationBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", "9813")
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.BuildNotification();
AppNotificationManager.Default.Show(notification);
}
Skompiluj i uruchom ponownie. Kliknij przycisk i upewnij się, że wyświetla się powiadomienie typu 'toast'.
Uwaga / Notatka
Kroki w tej sekcji pokazują, jak utworzyć aplikację w pakiecie . Alternatywą jest utworzenie spakowanej aplikacji z zewnętrzną lokalizacją. Aby przypomnieć sobie wszystkie te terminy, zobacz Zalety i wady pakietowania aplikacji.
Uruchamianie kodu w tle
W przypadku aplikacji WPF, które muszą wykonywać kod, gdy aplikacja nie jest uruchomiona, istnieją trzy podejścia w zależności od pakietu i obciążenia:
| Metoda | Wymagane jest pakowanie | Najlepsze dla |
|---|---|---|
| Zadania w tle Zestaw SDK do aplikacji systemu Windows | Tak (MSIX) | Energooszczędne wyzwalacze zarządzane przez system (czas/system) |
| Harmonogram zadań | Nie. | Okresowa synchronizacja, niezapakowane aplikacje |
| .NET Worker Services | Nie. | Długotrwałe bezgłowe obciążenia, dowolny model wdrożenia |
W przypadku zadań w tle Zestaw SDK do aplikacji systemu Windows, aplikacja WPF rejestruje składnik COM przy użyciu BackgroundTaskBuilder podobnie jak aplikacja WinUI 3 — zdarzenie Application.Startup w WPF odpowiada roli, jaką App.OnLaunched odgrywa w WinUI 3. Zobacz Korzystanie z zadań w tle w aplikacjach Windows aby uzyskać pełny przewodnik.
Uwaga / Notatka
Zestaw SDK do aplikacji systemu Windows zadania w tle wymagają pakietu MSIX. W przypadku rozpakowanych aplikacji WPF użyj Harmonogramu zadań lub usług roboczych w .NET.
Tematy pokrewne
- Windows Presentation Foundation (WPF)
- Instaluj narzędzia dla Zestaw SDK do aplikacji systemu Windows
- Przewodnik wdrażania Zestaw SDK do aplikacji systemu Windows dla aplikacji zależnych od frameworka, spakowanych z lokalizacją zewnętrzną lub niespakowanych
- Najnowsze pliki do pobrania dla Zestaw SDK do aplikacji systemu Windows
- Zalety i wady tworzenia pakietów aplikacji
- Użyj środowiska uruchomieniowego Zestaw SDK do aplikacji systemu Windows dla aplikacji spakowanych z niestandardową lokalizacją lub niespakowanych
- Architektura środowiska uruchomieniowego
- Funkcje, które wymagają tożsamości pakietu