Novinky pro .NET 8 (model Windows Forms .NET)
Tento článek popisuje některé nové funkce a vylepšení model Windows Forms v .NET 8.
Při migraci z rozhraní .NET Framework na .NET 8 byste měli vědět několik zásadních změn. Další informace najdete v tématu Zásadní změny v model Windows Forms.
Vylepšení datových vazeb
Nový modul datových vazeb byl ve verzi Preview s .NET 7 a je teď plně povolený v .NET 8. I když není tak rozsáhlý jako stávající modul pro vytváření datových vazeb model Windows Forms, tento nový modul je modelován po WPF, což usnadňuje implementaci principů návrhu MVVM.
Vylepšené možnosti datových vazeb usnadňují plné využití vzoru MVVM a využití mapovačů relačních objektů z modelů ViewModel v model Windows Forms. Tím se sníží množství kódu v souborech za kódem. Důležitější je, že umožňuje sdílení kódu mezi model Windows Forms a dalšími rozhraními .NET GUI, jako jsou WPF, UPW/WinUI a .NET MAUI. Je důležité si uvědomit, že zatímco dříve zmíněné architektury grafického uživatelského rozhraní používají XAML jako technologii uživatelského rozhraní, XAML se nechystá do model Windows Forms.
Rozhraní IBindableComponent a BindableComponent třída řídí nový systém vazeb. Controlimplementuje rozhraní a poskytuje nové možnosti datových vazeb pro model Windows Forms.
Příkazy tlačítek
Příkazy spouštěné tlačítkem byly ve verzi Preview s .NET 7 a jsou teď plně povolené v .NET 8. Podobně jako WPF může být instance objektu, který implementuje ICommand rozhraní, přiřazeno k vlastnosti tlačítka Command . Po kliknutí na tlačítko se vyvolá příkaz.
Volitelný parametr lze zadat při vyvolání příkazu zadáním hodnoty vlastnosti tlačítka CommandParameter .
Vlastnosti Command
jsou CommandParameter
v návrháři nastaveny prostřednictvím okna Vlastnosti v části (DataBindings), jak je znázorněno na následujícím obrázku.
Tlačítka také poslouchají ICommand.CanExecuteChanged událost, která způsobí, že ovládací prvek dotazuje metodu ICommand.CanExecute . Když tato metoda vrátí true
, ovládací prvek je povolen; ovládací prvek je zakázán při false
vrácení.
Vylepšení DPI sady Visual Studio
Visual Studio 2022 17.8 zavádí karty návrháře bez rozlišení DPI. Karta Windows Designer v sadě Visual Studio se dříve spustila na DPI sady Visual Studio. To způsobuje problémy při návrhu aplikace model Windows Forms s vědomím DPI. Teď můžete zajistit, aby se návrhář spustil ve stejném měřítku, ve kterém má aplikace běžet, a to buď s rozlišením DPI, nebo ne. Před zavedením této funkce jste museli spustit Visual Studio v režimu bez rozlišení DPI, který při použití škálování ve Windows rozostřil samotný Visual Studio. Teď můžete sadu Visual Studio nechat samotnou a nechat návrháře beze změny DPI.
Návrháře bez rozlišení DPI pro projekt model Windows Forms můžete povolit přidáním <ForceDesignerDPIUnaware>
do souboru projektu a nastavením hodnoty na true
hodnotu .
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
<ApplicationHighDpiMode>DpiUnawareGdiScaled</ApplicationHighDpiMode>
</PropertyGroup>
Důležité
Visual Studio toto nastavení přečte při načtení projektu, a ne při změně. Po změně tohoto nastavení uvolněte projekt a znovu ho načtěte, abyste visual Studio respektovali.
Vylepšení vysokého DPI
Vylepšili jsme vykreslování PerMonitorV2 s vysokým rozlišením DPI:
Správně škálovat vnořené ovládací prvky Například tlačítko, které je na panelu, které je umístěné na stránce karty.
Škálování Form.MaximumSize a Form.MinimumSize vlastnosti na základě aktuálního nastavení DPI monitorování
Od verze .NET 8 je tato funkce ve výchozím nastavení povolená a pokud se chcete vrátit k předchozímu chování, musíte se z ní odhlásit.
Pokud chcete tuto funkci zakázat, přidejte
System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
doconfigProperties
nastavení v runtimeconfig.json a nastavte hodnotu false:{ "runtimeOptions": { "tfm": "net8.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false, } } }
Různá vylepšení
Tady jsou některé další velmi vhodné změny:
- Byl vylepšen kód, který zpracoval
FolderBrowserDialog
, oprava několika nevrácených paměti. - Základ kódu pro model Windows Forms pomalu povoloval nullability jazyka C#, čímž se zamezí případné chyby odkazu na hodnotu null.
System.Drawing
Zdrojový kód se migroval do úložiště model Windows Forms GitHubu.- K moderní ikoně Windows má přístup nové rozhraní API. System.Drawing.SystemIcons.GetStockIcon Výčet System.Drawing.StockIconId obsahuje seznam všech dostupných systémových ikon.
- Nyní jsou k dispozici další návrháři za běhu. Další informace najdete v tématu Problém GitHubu č. 4908.
.NET Desktop feedback