2017-01-29 5 views
4

私は、従来のメニューとダイアログボックスを設定するために、XAMLとF#(C#なし)を使用する例を見つけようとしていました。私が見つけることができるものは、F#と.NETの最新バージョンの前に、C#または古いものを使用しています。誰も私が見ることができる例を提案することはできますか?ありがとう。F#でWPFメニューとダイアログボックスを使用するにはどうすればよいですか?

+3

http://fsprojects.github.io/FsXaml/ – CaringDev

+2

FsXAMLとFSharp.ViewModuleまたは[Gjallarhorn](https://github.com/ReedCopsey/Gjallarhorn/tree/master/samples)のいずれかが必要です結合。後者にはいくつかのサンプルがあります。 – s952163

+0

お返事ありがとうございました。私はあなたが提案する場所を見て、それを理解しようとします。他の誰かが他のアイディアを持っている場合は、このリストに追加してください。 –

答えて

2

WPFを学ぼうとすると、MVVMやMVCよりもむしろ「良い」古いコードに基づいた多くのC#の例が出てきます。以下では、F#WPFコードビハインドアプリケーションを迅速に作成する方法について説明します。これを使用すると、これらの例をすべて試してみるのが簡単になります。

F#コンソールアプリケーションを作成します。

出力タイプWindowsアプリケーションに変更してください。

FsXaml NuGetから。

これらの4つのソースファイルを追加し、この順序で並べます。

MainWindow.xaml

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="First Demo" Height="200" Width="300"> 
    <Canvas> 
     <Button Name="btnTest" Content="Test" Canvas.Left="10" Canvas.Top="10" Height="28" Width="72"/> 
    </Canvas> 
</Window> 

MainWindow.xaml.fs

namespace FirstDemo 

type MainWindowXaml = FsXaml.XAML<"MainWindow.xaml"> 

type MainWindow() = 
    inherit MainWindowXaml() 

    let whenLoaded _ = 
     () 

    let whenClosing _ = 
     () 

    let whenClosed _ = 
     () 

    let btnTestClick _ = 
     this.Title <- "Yup, it works!" 
     () 

    do 
     this.Loaded.Add whenLoaded 
     this.Closing.Add whenClosing 
     this.Closed.Add whenClosed 
     this.btnTest.Click.Add btnTestClick 

App.xaml

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

App.xaml.fs

namespace FirstDemo 

open System 
open System.Windows 

type App = FsXaml.XAML<"App.xaml"> 

module Main = 

    [<STAThread; EntryPoint>] 
    let main _ = 
     let app = App() 
     let mainWindow = new MainWindow() 
     app.Run(mainWindow) // Returns application's exit code. 

Program.fsファイルを削除してください。

変更ビルドアクション 2つのXAMLファイルのリソースへ。

.NETアセンブリへの参照を追加します。UIAutomationTypes

コンパイルして実行します。

デザイナを使用してイベントハンドラを追加することはできません。コードを手動で追加するだけです。

StackOverflowは、このような完全なデモを投稿するのに最適な場所ではない場合があります。特に、同じ行に複数の質問が表示されている場合は特にそうです。他にも優れた場所がある場合は、この種のもののためのパブリックレポ、私に知らせてください。

+0

ベント、ありがとう、ありがとう、ありがとう!今日は私の誕生日です。あなたの返信は私が得た最高のプレゼントです。あなたの答えは簡単で、ステップバイステップで、実際に働いた。今私はそれから学び、WPFのメニューやダイアログボックスにそれを適用できるかどうかを確認する必要があります。再度、感謝します。 –

+0

ありがとう、ボブ。コントロールに関するヘルプ、ウィンドウアイコン、アプリケーションアイコン、その他のものを追加する方法が必要な場合は、もう一度お問い合わせください。ほとんどのものはC#と似ていますが、F#固有のビットはGoogleにとって本当に難しいものです。 –

+0

ああ、そして - 誕生日おめでとう、ボブ! –

関連する問題