Putting it all together.



In previous incarnations of this blog I have assume the person reading it would have some knowledge of C#, WPF, and Visual Studio.  But if you happen across this Blog and would like to get started in desktop programming.  I thought I’d break it down in more coordinated way. First of all let me mention a wonderful blog for WPF  https://wpf.2000things.com/.  In this is a great source of information on using WPF. C# sources are all over the internet, but if require more formal training I recommend Plural Sight  https://www.pluralsight.com/.  They have some course that are free.  If you can take a class from Debora Kurata,  Another course I would like to suggest is “Becoming an Outlier”, with Cory House.  This is a great course about excelling in your career.   https://app.pluralsight.com/library/courses/career-reboot-for-developer-mind/table-of-contents.  To get a free copy of Visual Studio (yes I did say free), try the community addition at https://www.visualstudio.com/downloads/.

Now for the details.

Step 1:

Download Visual Studio Community edition. Install it and open it up. Select file>new and select Visual C# > Widows Classic Desktop on the right select WPF App.  This will create a blank WPF  project in the default directory.  You name it any thing you like.


Step 2:

What you see next should get you started. with a blank MainWindow.xaml window. If you click the arrow beside MainWindow.xaml you see the code behind page.  Double click on it to open it up and copy the following code.

namespace WpfApp1
public partial class MainWindow : Window
public int MyMode = 0;
public MainWindow()

public void MakeDataSet()
DataTable table1 = new DataTable(“StateCapitals”);
table1.Rows.Add(“Alabama”, “Montgomery”, “32.361538”, “-86.279118”);
table1.Rows.Add(“Alaska”, “Juneau”, “58.301935”, “-134.419740”);
table1.Rows.Add(“Arizona”, “Phoenix”, “33.448457”, “-112.073844”);
table1.Rows.Add(“Arkansas”, “Little Rock”, “34.736009”, “-92.331122”);
table1.Rows.Add(“California”, “Sacramento”, “38.555605”, “-121.468926”);
table1.Rows.Add(“Colorado”, “Denver”, “39.7391667”, “-104.984167”);
table1.Rows.Add(“Connecticut”, “Hartford”, “41.767”, “-72.677”);
table1.Rows.Add(“Delaware”, “Dover”, “39.161921”, “-75.526755”);
table1.Rows.Add(“Florida”, “Tallahassee”, “30.4518”, “-84.27277”);
table1.Rows.Add(“Georgia”, “Atlanta”, “33.76”, “-84.39”);
table1.Rows.Add(“Hawaii”, “Honolulu”, “21.30895”, “-157.826182”);
table1.Rows.Add(“Idaho”, “Boise”, “43.613739”, “-116.237651”);
table1.Rows.Add(“Illinois”, “Springfield”, “39.783250”, “-89.650373”);
table1.Rows.Add(“Indiana”, “Indianapolis”, “39.790942”, “-86.147685”);
table1.Rows.Add(“Iowa”, “Des Moines”, “41.590939”, “-93.620866”);
table1.Rows.Add(“Kansas”, “Topeka”, “39.04”, “-95.69”);
table1.Rows.Add(“Kentucky”, “Frankfort”, “38.197274”, “-84.86311”);
table1.Rows.Add(“Louisiana”, “Baton Rouge”, “30.45809”, “-91.140229”);
table1.Rows.Add(“Maine”, “Augusta”, “44.323535”, “-69.765261”);
table1.Rows.Add(“Maryland”, “Annapolis”, “38.972945”, “-76.501157”);
table1.Rows.Add(“Massachusetts”, “Boston”, “42.2352”, “-71.0275”);
table1.Rows.Add(“Michigan”, “Lansing”, “42.7335”, “-84.5467”);
table1.Rows.Add(“Minnesota”, “Saint Paul”, “44.95”, “-93.094”);
table1.Rows.Add(“Mississippi”, “Jackson”, “32.320”, “-90.207”);
table1.Rows.Add(“Missouri”, “Jefferson City”, “38.572954”, “-92.189283”);
table1.Rows.Add(“Montana”, “Helana”, “46.595805”, “-112.027031”);
table1.Rows.Add(“Nebraska”, “Lincoln”, “40.809868”, “-96.675345”);
table1.Rows.Add(“Nevada”, “Carson City”, “39.160949”, “-119.753877”);
table1.Rows.Add(“New Hampshire”, “Concord”, “43.220093”, “-71.549127”);
table1.Rows.Add(“New Jersey”, “Trenton”, “40.221741”, “-74.756138”);
table1.Rows.Add(“New Mexico”, “Santa Fe”, “35.667231”, “-105.964575”);
table1.Rows.Add(“New York”, “Albany”, “42.659829”, “-73.781339”);
table1.Rows.Add(“North Carolina”, “Raleigh”, “35.771”, “-78.638”);
table1.Rows.Add(“North Dakota”, “Bismarck”, “46.813343”, “-100.779004”);
table1.Rows.Add(“Ohio”, “Columbus”, “39.962245”, “-83.000647”);
table1.Rows.Add(“Oklahoma”, “Oklahoma City”, “35.482309”, “-97.534994”);
table1.Rows.Add(“Oregon”, “Salem”, “44.931109”, “-123.029159”);
table1.Rows.Add(“Pennsylvania”, “Harrisburg”, “40.269789”, “-76.875613”);
table1.Rows.Add(“Rhode Island”, “Providence”, “41.82355”, “-71.422132”);
table1.Rows.Add(“South Carolina”, “Columbia”, “34.000”, “-81.035”);
table1.Rows.Add(“South Dakota”, “Pierre”, “44.367966”, “-100.336378”);
table1.Rows.Add(“Tennessee”, “Nashville”, “36.165”, “-86.784”);
table1.Rows.Add(“Texas”, “Austin”, “30.266667”, “-97.75”);
table1.Rows.Add(“Utah”, “Salt Lake City”, “40.7547”, “-111.892622”);
table1.Rows.Add(“Vermont”, “Montpelier”, “44.26639”, “-72.57194”);
table1.Rows.Add(“Virginia”, “Richmond”, “37.54”, “-77.46”);
table1.Rows.Add(“Washington”, “Olympia”, “47.042418”, “-122.893077”);
table1.Rows.Add(“West Virginia”, “Charleston”, “38.349497”, “-81.633294”);
table1.Rows.Add(“Wisconsin”, “Madison”, “43.074722”, “-89.384444”);
table1.Rows.Add(“Wyoming”, “Cheyenne”, “41.145548”, “-104.802042”);

DataSet set = new DataSet(“StateCapitals”);
private void GetPush(DataSet Ds)

int rcount = Ds.Tables[0].Rows.Count;
for (int i = 0; i < rcount; i++)
string strLat = Ds.Tables[0].Rows[i].Field<string>(“Lat”);
string strLong = Ds.Tables[0].Rows[i].Field<string>(“Log”);
string strCap = Ds.Tables[0].Rows[i].Field<string>(“Capital”);
string strState = Ds.Tables[0].Rows[i].Field<string>(“STATE”);
string locT1 = strState + “\n”;
string locT2 = strCap + “\n”;
string locT3 = strLat + “\n”;
string locT4 = strLong;
Double results1, results2;
results1 = Convert.ToDouble(strLat);
results2 = Convert.ToDouble(strLong);
Pushpin pushpin6 = new Pushpin();
pushpin6.PositionOrigin = PositionOrigin.Center;
pushpin6.ToolTip = locT1 + locT2 + locT3 + locT4;
pushpin6.Content = strCap;
pushpin6.Height = 55;
pushpin6.FontSize = 8;
pushpin6.Background = new SolidColorBrush(Colors.Red);
pushpin6.Foreground = new SolidColorBrush(Colors.Black);
MapLayer.SetPosition(pushpin6, new Location(results1, results2));

private void btMode_Click(object sender, RoutedEventArgs e)
if (MyMode == 0)
myMap.Mode = new AerialMode();
MyMode = 1;
myMap.Mode = new RoadMode();
MyMode = 0;

At the top of the form you’ll need to add using “Microsoft.Maps.MapControl.WPF;” If you have not referenced the bing map control you will see an error. Use proceedures in: “Creating the Map: WPF Bing Map Part 2” earlier post.  That should get the back-end taken care of.

Now for the XAML:

Step 3:

Open up the xaml window and past the following code:

<Window x:Class=”StateCaps.MainWindow”
Title=”MainWindow” Height=”450″ Width=”625″>
<Style x:Key=”CustomInfoboxStyle” TargetType=”ToolTip”>
<Setter Property=”Background” Value=”Transparent” />
<Setter Property=”BorderBrush” Value=”Transparent” />
<Setter Property=”BorderThickness” Value=”2″ />
<Setter Property=”Template”>
<Border CornerRadius=”5″>
<SolidColorBrush Color=”Black” Opacity=”0.5″/>
<ContentPresenter Margin=”5″>
<StackPanel Margin=”5″ >
<TextBlock Text=”{Binding Title}” FontWeight=”Bold” FontSize=”26″ Foreground=”White” Height=”120″/>
<TextBlock Text=”{Binding Description}” Foreground=”White” TextWrapping=”Wrap”/>
<Grid Margin=”0,0,0,0″ Background=”#FF43B08B”>
<RowDefinition Height=”24*”/>
<RowDefinition Height=”395*”/>
<ColumnDefinition Width=”62*”/>
<ColumnDefinition Width=”555*”/>
<Button x:Name=”btMode” Content=”Mode” Margin=”1,1,0,5″ Click=”btMode_Click” />
<m:Map x:Name=”myMap” CredentialsProvider=”Your Key Here” Mode=”Road” Center=”35.665600,-95.469700″ ZoomLevel=”3″ Grid.ColumnSpan=”2″ Grid.Row=”1″/>

Your done! If you followed the instructions you should have a working program.   Now the way you learn is but messing with it have fun.  Next time let’s talk java script.




Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s