ARTICLE

How to Display Different Window Styles in WPF Using F#

Posted by Dea Saddler Articles | F# September 05, 2011
This article is a demonstration regarding how to change the Style of the window in WPF using F#. Take a quick review to learn.
Reader Level:
Download Files:
 

Today I am going to explain how you can display different window styles in WPF using F#. If you want to show a different window style firstly you will create a MenuItem Object to change the window style than you will add the items (Window Styles) to the menu. Then you will add this style menu to a Dock Panel and lastly add a TextBlock to the Dock panel to show the Text in the Window. where you can set the Title, FontSize and Alignment properties for the Text.

A MenuItem object will be created by below code.

// This will Create the MenuItem objects to change WindowStyle
let stylItm = new MenuItem(Header="_WindowStyle");

The below given code will add the Items to the Menu.

// This will Add window styles menu items
[("_Window Without Border", WindowStyle.None);
 ("_Window with Single Border",WindowStyle.SingleBorderWindow);
 ("_Window with 3D Border",WindowStyle.ThreeDBorderWindow);
 ("_Window with Tool",WindowStyle.ToolWindow)]
 |> Seq.iter (fun (str,style) ->
      let cmpnt = new MenuItem(Header=str,
                              Tag=style,
                              IsChecked= (style=wndw.WindowStyle))
      if cmpnt.IsChecked then itemChecked <- cmpnt
      cmpnt.Click.Add( fun _ ->
         itemChecked.IsChecked <- false
         cmpnt.IsChecked <- true
         wndw.WindowStyle <-(cmpnt.Tag :?> WindowStyle)
         itemChecked <- cmpnt)
        
      stylItm.Items.Add(cmpnt) |> ignore)

Then you will add this style Menu to the Dock Panel with the below code.

// This will Add Style menu to dock panel
let nwmnu = new Menu()
nwmnu.Items.Add(stylItm)|>ignore
dck.Children.Add(nwmnu)|>ignore
DockPanel.SetDock(nwmnu, Dock.Top)

Lastly a TextBlock will be added to the Dock Panel with the below code.

//This will Add TextBlock to DockPanel
dck.Children.Add
   (new TextBlock(Text=wndw.Title,
                  FontSize=25.0,
                  TextAlignment = TextAlignment.Center)
   ) |> ignore

Steps For Window style

Step 1: Firstly Open a new project in F# using Visual Studio 2010. Select F# WPF application template and give name to it like below image.

New Project Dialog Box

Step 2: Now add the below define references to the project by right clicking on the project in Solution Explorer.

  • PresentationCore

  • PresentationFramework

  • System

  • System.Xaml

  • WindowsBase

Step 3: When you have added all these references, your Solution Explorer will look like the below image.

Solution Explorer

Step 4: Now click on Program.fs in Solution Explorer and write the below code in the Program.fs window. Your window will look like below.

Window Style code part1

Window Style code part1.1

#light
 
open System
open System.Windows
open System.Windows.Controls
open System.Windows.Input
open System.Windows.Media
 
let mutable itemChecked:MenuItem = null
 
let dck = new DockPanel()
 
let wndw = new Window(Title="Different Window Styles",
                        SizeToContent = SizeToContent.WidthAndHeight,
                        Content=dck)
 
// This will Create the MenuItem objects to change WindowStyle
let stylItm = new MenuItem(Header="_WindowStyle");
 
// This will Add window styles menu items
[("_Window Without Border", WindowStyle.None);
 ("_Window with Single Border",WindowStyle.SingleBorderWindow);
 ("_Window with 3D Border",WindowStyle.ThreeDBorderWindow);
 ("_Window with Tool",WindowStyle.ToolWindow)]
 |> Seq.iter (fun (str,style) ->
      let cmpnt = new MenuItem(Header=str,
                              Tag=style,
                              IsChecked= (style=wndw.WindowStyle))
      if cmpnt.IsChecked then itemChecked <- cmpnt
      cmpnt.Click.Add( fun _ ->
         itemChecked.IsChecked <- false
         cmpnt.IsChecked <- true
         wndw.WindowStyle <-(cmpnt.Tag :?> WindowStyle)
         itemChecked <- cmpnt)
        
      stylItm.Items.Add(cmpnt) |> ignore)
     
// This will Add Style menu to dock panel
let nwmnu = new Menu()
nwmnu.Items.Add(stylItm)|>ignore
dck.Children.Add(nwmnu)|>ignore
DockPanel.SetDock(nwmnu, Dock.Top)
  
//This will Add TextBlock to DockPanel
dck.Children.Add
   (new TextBlock(Text=wndw.Title,
                  FontSize=25.0,
                  TextAlignment = TextAlignment.Center)
   ) |> ignore
 
 
#if COMPILED
[<STAThread()>]
do
    let app =  Application() in
    app.Run(wndw) |> ignore
#endif

Step 5: Now press F5 to execute the Code.

Output

Firstly you will get the default Style of Windows which is a window with single Border.

Output 1

Output2

Then you will get the window without Border,3D Border and other styles as well.

Output3

Output4

Output5

Summary

In this article I have discussed how you can display different window styles in WPF using F#.

Login to add your contents and source code to this article
post comment
     
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
Join a Chapter
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts