.NET Core 3.x + VB에서도 Wpf를 원합니다!

소개



이것은 Visual Basic Advent Calendar 2019의 21 일째 기사입니다.

지난번 기사에서 「 .NET Core 3.x + VB에서도 WinForms를 원합니다!

템플릿에 VB가 없음



@t 후쿠모리 님의 "VB.NET의 .NET Core에서 WinForms, WPF 지원은 어떻게됩니까? "기사에서와 같이 템플릿에 VB가 없습니다.

아래 사이트에 따르면 VB 지원은 불행히도 .NET 5가 된 것 같습니다. .NET 3.1 하지만 쓸모 없었습니다.
  • .NET Core 3.0 VB WPF/Winforms Templates are disappeared
  • Remove WPF VB Templates #1734

  • 기존 프로젝트 템플릿이라면 VB에는 대응하지 않지만 .csproj 와 같은 형태로 .vbproj 파일을 다시 작성하면 VB에서도 WPF 애플리케이션을 작성할 수 있습니다.

    환경


  • Visual Studo 2019 Version 16.5 Preview 1
  • .NET Core SDK 3.1

  • 프로젝트 파일



    VB에서도 해 보았습니다.

    VBWpfApp.vbproj
    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UseWPF>true</UseWPF>
        <StartupObject>Sub Main</StartupObject>
      </PropertyGroup>
    
    </Project>
    

    특별한 점은 특별히 없을 수도 있습니다. 그리고, Sdk"Microsoft.NET.Sdk.WindowsDesktop" 로 하고 있습니다.

    VBWpfApp.vbproj.user
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup />
      <ItemGroup />
      <ItemGroup>
        <Page Update="MainWindow.xaml">
          <SubType>Designer</SubType>
        </Page>
      </ItemGroup>
    </Project>
    

    출처



    Application.xaml
    <Application x:Class="Application"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:VBWpfApp"
        StartupUri="MainWindow.xaml">
        <Application.Resources>
    
        </Application.Resources>
    </Application>
    

    Application.xaml.vb
    Class Application
    
        ' Startup、Exit、DispatcherUnhandledException などのアプリケーション レベルのイベントは、
        ' このファイルで処理できます。
    
    End Class
    

    텍스트 상자와 버튼을 배치한 화면이 됩니다.

    MainWindow.xaml
    <Window x:Class="MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:VBWpfApp"
            mc:Ignorable="d"
            Title="MainWindow" Height="233" Width="338">
        <Grid>
            <Button Content="Button" HorizontalAlignment="Left" Height="37" Margin="102,100,0,0" VerticalAlignment="Top" Width="111" RenderTransformOrigin="-0.009,0.135" Click="Button_Click"/>
            <TextBox x:Name="testText" Height="24" Margin="0,43,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top"/>
    
        </Grid>
    </Window>
    

    버튼 이벤트에서 텍스트 상자에 "Hello! .NET Core 3.0"을 설정합니다.

    MainWindow.xaml.vb
    Imports System.Windows
    
    Class MainWindow
        Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
            testText.Text = "Hello! .NET Core 3.0"
        End Sub
    End Class
    

    결과





    버튼을 클릭하면 텍스트 상자에 "Hello! .NET Core 3.0"이 설정되었습니다.



    마지막으로



    현재 Windows Forms가 아직 미리 보기 상태이므로 WPF에서 만드는 것이 좋습니까?

    좋은 웹페이지 즐겨찾기