Hi all.
just wanted to announce that the blog has moved!!
the new address is http://dev102.com and the new feed address is http://feeds.feedburner.com/Dev102feed
see ya!!
Amit
Sunday, January 13, 2008
I Moved!!!!
Posted by Amit Raz at 1:24 PM 0 comments
Thursday, December 27, 2007
How To Use Hierarchical DataTemplate in WPF
Hi all
I am going to show you a simple example of how to use Hierarchical DataTemplates in a tree view for an easy display of hierarchical Data. The Example shows the links in a WebPage recursively. First we will create the data model that we want to show, note that we have two seperate models, one for the root element and one for the acctual data.
public class WebPage
{
public string Href { get; set; }
public string PageTitle { get; set; }
public List<WebPage> LinksInPage { get; set; }
}
public class Root
{
public string Title { get; set; }
public string Url { get; set; }
public List<WebPage> WebPages { get; set; }
}
We have to create a root object and the accrual data object as separate classes. the data template for each one will look like this:
<HierarchicalDataTemplate DataType="{x:Type data:Root}"
ItemsSource="{Binding Path=WebPages}">
<Border BorderBrush="Black"
BorderThickness="2"
CornerRadius="10">
<StackPanel>
<TextBlock Margin="10,0,0,0"
Text="{Binding Title}"></TextBlock>
</StackPanel>
</Border>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type data:WebPage}"
ItemsSource="{Binding Path=LinksInPage}">
<Border BorderBrush="Black"
BorderThickness="2"
CornerRadius="10">
<StackPanel>
<TextBlock Margin="10,0,0,0"
Text="{Binding PageTitle}"></TextBlock>
<TextBlock Margin="10,0,0,0"
Text="{Binding Href}"></TextBlock>
</StackPanel>
</Border>
</HierarchicalDataTemplate>
In the constructor of the window we will create the hierarchy of the data in code and provide the tree view with the DataContext
public Window1()
{
InitializeComponent();
Root r = new Root();
r.WebPages = new List<WebPage>();
r.Title = "HomePage";
r.Url = @"http://www.HomePage.com";
WebPage link1 = new WebPage();
link1.Href = @"http://www.HomePage.com/link1";
link1.PageTitle = "link1";
r.WebPages.Add(link1);
WebPage Link2 = new WebPage();
Link2.Href = @"http://www.HomePage.com/Link2";
Link2.PageTitle = "Link2";
r.WebPages.Add(Link2);
WebPage Link3 = new WebPage();
Link3.Href = @"http://www.HomePage.com/Link2/Link3";
Link3.PageTitle = "Link3";
Link2.LinksInPage = new List<WebPage>();
Link2.LinksInPage.Add(Link3);
WebPage Link4 = new WebPage();
Link4.Href = @"http://www.HomePage.com/Link2/Link4";
Link4.PageTitle = "Link4";
Link2.LinksInPage.Add(Link4);
WebPage Link5 = new WebPage();
Link5.Href = @"http://www.HomePage.com/link1/Link5";
Link5.PageTitle = "Link5";
link1.LinksInPage = new List<WebPage>();
link1.LinksInPage.Add(Link5);
WebPage Link6 = new WebPage();
Link6.Href = @"http://www.HomePage.com/link2/Link3/Link6";
Link6.PageTitle = "Link6";
Link3.LinksInPage = new List<WebPage>();
Link3.LinksInPage.Add(Link6);
treeView1.DataContext = r;
}
To finish we will define the TreeView in Xaml:
<Grid Background="LightSkyBlue">
<TreeView Margin="0,0,15,0" Name="treeView1" Background="LightSkyBlue">
<TreeViewItem ItemsSource="{Binding Path=WebPages}"
Header="{Binding Title}"></TreeViewItem>
</TreeView>
</Grid>
Notice that we provide the TreeView with one TreeViewItem, thats the root The result is this display:
You can download the Source code here:
http://www.filefactory.com/file/2e5dfd/
Enjoy
Amit
Posted by Amit Raz at 9:00 PM 7 comments
Labels: .Net, C#, Expression Blend, Visual Studio, WPF, Xaml
Saturday, December 22, 2007
How to Suppress / Disable Script Errors in WebBrowser Control
Hi all
I am currently writing an application that uses the WebBrowser control to perform operations on web pages. Unfortunately I stumbled upon a very annoying problem, sometimes an Internet explorer script error window pops up and stops all execution until you click the OK button. I've searched the web for hours and the same answer came up:
it's easy (so easy, yeah...) just do this:
WebBrowser.Silent = true;
the problem is that WebBrowser does not have a property named silent!!!!!! Maybe it did, but no more! if you don't believe me take a a look at the MSDN.
What you should do is use
WebBrowser.ScriptErrorsSuppressed = true;
which does exists...
Hope this helps some frustrated people (like me).
Happy holidays
Amit
Posted by Amit Raz at 6:08 PM 17 comments
Labels: .Net, ASP, C#, Internet Explorer, Visual Studio
How To Use Microsoft Expression Blend to Modify a Control
Hi all
Say you absolutely have to change the Button of a Combobox to a circle instead of an arrow - you just have to!!!!
Here comes Microsoft Expression Blend to the rescue, If you code in WPF and don't have it yet, you can get it here:
http://www.microsoft.com/expression/products/download.aspx?key=blend2preview
Its the beta of blend 2 but believe me when I say it feels like no beta.
Ill wait here while you download and install...
Done? Great let's start:
Open up a new project and throw in a combobox. Right click on the combobox, you should get the following context menu:
We want to press on edit a copy (picture above), which will open the next menu:
This is Microsoft Blend's way of saying: I am going to create a new style, where would you like me to put it?
Press ok if you want it in the window's resources or select a resource dictionary if you want it to be placed there, for the sake of the example lets press OK. Now we have created a custom Combobox style. Lets right click on the Combobox toggle button, this menu pops:
We are going to select the edit template option (picture above) and that's it: we can now do whatever we want to the toggle button, like put in a red circle instead of the arrow. To do that, select the arrow by using the Direct select option from the toolbar on the left (second from top) and delete it. Insert an ellipse where the arrow used to be, and paint it red. The result is this beautiful Combobox that function exactly like the original, except it has a red circle and not an arrow:
In the same manner you can do whatever you want to any control. If you wish to see the code that Microsoft Blend wrote for you, just check out Window1.xaml or the resource dictionary you specified before
Please comment if you are experiencing problems I'll be happy to help
Enjoy
Amit
Posted by Amit Raz at 11:28 AM 1 comments
Wednesday, December 19, 2007
Expresso - a Great Regular Expression Tool
Hi All
This one is for all you guys who are tired of pressing F5 over and over in Visual studio just to see if you got the Regular expression right, I know got tired of it and that's how i found this tool.
Introducing Expresso the "Visual Studio of Regular Expression":
You can Download it free of charge from here:
http://www.ultrapico.com/ExpressoDownload.htm
After you install it and run check the help section, there's a very useful tutorial there. basically your screen is split into four: Top left corner is where you type in the pattern you are looking for, top right is the analyzer which compiles the pattern on the left as you type it, bottom left is the actual text you are parsing and on the bottom right are the matches your pattern turned out. In order to check for matches you just have to click "Run Mach" which is located just above the top left window. you can try and use my other example for regular expressions (http://dev102.blogspot.com/2007/12/regular-expressions.html) on Expresso to check how it works.
The most important thing is that after you are satisfied with the results click on Tools->View Code and Viola, on the bottom right you get the actual C# code for your application
Comment if you have any questions
Enjoy
Amit
Posted by Amit Raz at 10:32 PM 0 comments
Labels: .Net, C#, Regular Expressions, Utilities
Internet Explorer 7 Ultimate Plugin
Hi all.
Do you envy the Mozilla ad blocker and customizations options?
Well, no more!!!
Introducing IE7Pro the perfect add-in that give you great customization options and much much more!
Check it out here:
http://www.ie7pro.com/
Enjoy
Amit
Posted by Amit Raz at 5:57 PM 0 comments
Labels: Internet Explorer, Utilities
Monday, December 17, 2007
How to Compile from Windows Explorer / Total Commander
Hi all
Are you dreaming of compiling/building binaries without waiting hours for Visual Studio to open up ?
Now you can !
You can download a Registry fix File from here :
http://www.filefactory.com/file/eefa52/
Just double click it and your there...
The result is this:
Notes:
1. It's build debug only version.
1. Will not work for unmanaged (win32 types) projects.
If you are suspicious :) Just create a text file and name it <whatever>.reg and Copy what's written below in blue into it and just double click it to integrate it into the registry
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell\Build]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell\Build\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:build /v:m /p:Configuration=Debug;Platform=\"x86\"\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell\Clean]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell\Clean\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:clean /v:n /p:Configuration=Debug;Platform=\"x86\"\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell\Rebuild]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.sln\shell\Rebuild\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:rebuild /v:n /p:Configuration=Debug;Platform=\"x86\"\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell\Build]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell\Build\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:build /v:m /p:Configuration=Debug;Platform=\"AnyCPU\"\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell\Clean]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell\Clean\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:clean /v:n /p:Configuration=Debug;Platform=\"AnyCPU\"\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell\Rebuild]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.csproj\shell\Rebuild\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:rebuild /v:n /p:Configuration=Debug;Platform=\"AnyCPU\"\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell\Build]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell\Build\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:build /v:m /p:Configuration=Debug\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell\Clean]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell\Clean\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:clean /v:n /p:Configuration=Debug\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell\Rebuild]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.proj\shell\Rebuild\command]
@="cmd.exe /K \"\"%%windir%%\\Microsoft.NET\\Framework\\v2.0.50727\\MSBuild.exe\" \"%1\" /t:rebuild /v:n /p:Configuration=Debug\""
Have fun
Posted by Amit Raz at 9:36 PM 0 comments
Labels: .Net, C#, Utilities, Visual Studio