Creating styles in Silverlight


A simple example for setting styles in silverlight.
In silverlight we create styles in app.xaml

<Application.Resources>
        <Style x:Key="TitleBorder" TargetType="Border">
            <Setter Property="CornerRadius" Value="10"/>
            <Setter Property="Background" Value="#FFDEDEDE"/>
            <Setter Property="Margin" Value="0,0,5,0"/>
        </Style>
</Application.Resources>


In xaml where you want to apply the style,

<Border Style="{StaticResource TitleBorder}">
<TextBlock Text="SEARCH"/>
</Border>

ASP.NET Popup Window

in asp. page
<asp:Button ID="btnPhoto" runat="server" Text="Button" />


in c# Page_Load event
btnPhoto.Attributes.Add("onclick","window.open(' your page name comes here with
Extension ','cal','width=305, height=206, left=630, top=384,toolbar=no, menubar=no, scrollbars=no');");

 OR

<asp:Button ID="btnPhoto" runat="server" Text="Button"
OnClientClick='window.open("your page name comes here with Extension","cal","width=900, height=300, toolbar=no, menubar=no, scrollbars=no")' />

Three-tier architecture in ASP.NET

  • The presentation tier
  • The business tier
  • The data tier 
The presentation tier contains the UI (User Interface) elements of the site, and includes all the logic that manages the interaction between the visitor and the client’s business. (ASP.NET Web Forms, Web User Controls, ASP.NET Master Pages)
The business tier receives requests from the presentation tier and returns a result to the presentation tier depending on the business logic it contains. (C# Classes)
The data tier is responsible for storing the application’s data and sending it to the business tier when requested. (SQL Server Stored Procedures)

Date format in silverlight DatePicker


In App.xaml.cs, add;

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
ci.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
Thread.CurrentThread.CurrentCulture = ci;
It will be like this;

public App()
        {
            this.Startup += this.Application_Startup;
            this.Exit += this.Application_Exit;
            this.UnhandledException += this.Application_UnhandledException;
            CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
            ci.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
            Thread.CurrentThread.CurrentCulture = ci;
            InitializeComponent();
        }

Silverlight DataGrid

Here I am adding ComboBox and TextBox in Silverlight DataGrid.

In XAML,

<data:DataGrid x:Name="mydatagrid" Grid.Row="2" Grid.Column="0"  AutoGenerateColumns="False" IsReadOnly="True" Height="200" Width="625"
Visibility="Collapsed"  HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" SelectionMode="Single">
  
            <data:DataGrid.Columns>
                <data:DataGridTemplateColumn Header="RATING SCALE" Width="120">
                    <data:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox Loaded="cboRatingScale_Loaded" DisplayMemberPath="{Binding assessmentTitle}" Tag="{Binding rid}"  x:Name="cboRatingScale" SelectionChanged="cboRatingScale_SelectionChanged"  Width="120" Height="25" ></ComboBox>
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>
                </data:DataGridTemplateColumn>
               
                <data:DataGridTextColumn Binding="{Binding GroupTitle}" Header="CAPABILITY" Width="100"  />
                <data:DataGridTextColumn Binding="{Binding GroupDesc}" Header="DEFINITION" Width="100" />
                <data:DataGridTextColumn Binding="{Binding Question}" Header="ANCHOR COMPETENCIES" Width="150" />
               <data:DataGridTemplateColumn Header="COMMENTS" Width="150" >
                    <data:DataGridTemplateColumn.CellTemplate >
                        <DataTemplate >
                            <TextBox  x:Name="txtComments" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden"  Width="200" AcceptsReturn="True"  Height="30" Text="{Binding Remarks}" ></TextBox>
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>
                </data:DataGridTemplateColumn>
               
            </data:DataGrid.Columns>
        </data:DataGrid>

In c#,
mydatagrid.ItemsSource = e.Result;


You can also put DataPager with this, discussed in my previous post.

Using Session in Silverlight


Silverlight did not support session as in asp.net. So we have to create a class for that.
Here I am creating property called  System.Collections.Generic.Dictionary.
This allows representing a collection of keys and values.

Now we create a class called sessionmanager and defining Dictionary property here.
public class SessionManager
{
private static Dictionary<string, object> session = new Dictionary<string, object>();
public static Dictionary<string, object> Session
{
get { return SessionManager.session; }
set { SessionManager.session = value; }
}
}

Then in your code behind page,

Pass the value as,
SessionManager.Session["userid"] = “your value goes here”;
And retrieve the value as
String sString = SessionManager.Session["userid"].ToString();

Silverlight DataPager

In Xaml

<data:DataPager x:Name="DataPagerName" DisplayMode="FirstLastPreviousNextNumeric" HorizontalAlignment="Center" Source="{Binding Path=ItemsSource,ElementName=DataGridname}" PageSize="10"/>


C# code

PagedCollectionView tempListView = new PagedCollectionView(e.Result);
DataGridname.ItemsSource = tempListView;

Databinding in c#

create name space as ,
using System.Data;
using System.Data.OleDb

then

String StrSql = "your sql query";
OleDbDataAdapter objDataAdapter = new OleDbDataAdapter(StrSql, sqlconnectionname);
DataSet objDataSet = new DataSet("ClientName");
objDataAdapter.Fill(objDataSet, "ClientName");
objDataAdapter.Dispose();




instead of OleDb we can use sqlclient accordingly

Setting Value in Web.Config

in Web.Config file,
 
<appSettings>
        <add key="yourkey" value="yourvalue"/>
</appSettings>

in c#

string getVal = ConfigurationManager.AppSettings["yourkey"].ToString();

Now we get  the "yourvalue" in string-getVal

Access modifiers in c#

Access modifiers are an integral part of object-oriented programming. They support the concept of encapsulation, which promotes the idea of hiding functionality. Access modifiers allow you to define who does or doesn't have access to certain features.



In C# there are 5 different types of Access Modifiers.
 
Modifier
Description
public
There are no restrictions on accessing public members.
private
Access is limited to within the class definition. This is the default access modifier type if none is formally specified
protected
Access is limited to within the class definition and any class that inherits from the class
internal
Access is limited exclusively to classes defined within the current project assembly
protected internal
Access is limited to the current assembly and types derived from the containing class. All members in current project and all members in derived class can access the variables.




 
public

The public keyword is an access modifier for types and type members. Public access is the most permissive access level. There are no restrictions on accessing public members.
 
Accessibility: 
  • Can be accessed by objects of the class
  • Can be accessed by derived classes
Example: In the following example num1 is direct access.
using System;  
namespace AccessModifiers
{
    class Program
    {
        class AccessMod
        {
            public int num1;
        }
        static void Main(string[] args)
        {
            AccessMod ob1 = new AccessMod();
            ob1.num1 = 100; 
            Console.WriteLine("Number one value in main {0}", ob1.num1);
            Console.ReadLine();
        }
    }
}
 
private
 
Private access is the least permissive access level.
Private members are accessible only within the body of the class or the struct in which they are declared.
 
Accessibility: 
  • Cannot be accessed by object
  • Cannot be accessed by derived classes
Example: In the following example num2 is not accessible outside the class.

using System; 
namespace AccessModifiers
{
    class Program
    {
        class AccessMod
        {
            public int num1;
            int num2;
        }
        static void Main(string[] args)
        {
            AccessMod ob1 = new AccessMod();
            ob1.num1 = 100;
            ob1.num2 = 20;
            Console.WriteLine("Number one value in main {0}", ob1.num1);
            Console.ReadLine();
        }
    }
}
 
The above program will give compilation error, as access to private is not permissible. In the below figure you can see the private member num2 is not available.

protected

A protected member is accessible from within the class in which it is declared, and from within any class derived from the class that declared this member. A protected member of a base class is accessible in a derived class only if the access takes place through the derived class type.
 
Accessibility: 
  • Cannot be accessed by object
  • By derived classes
using System;
namespace AccessModifiers
{
    class Program
    {
        class Base
        {
            protected int num1;
        }
        class Derived : Base
        {
            public int num2;
            static void Main(string[] args)
            {
                Base ob1 = new Base();
                Derived ob2 = new Derived();
                ob2.num1 = 20;
                ob2.num2 = 90; 
                Console.WriteLine("Number2 value {0}", ob2.num2);
                Console.WriteLine("Number1 value which is protected {0}", ob2.num1);
                Console.ReadLine();
            }
        }
    }
}
 
In the above program we try to access protected member in main it is not available as shown in the picture below that num1 is not listed in intellisense.

internal
 
The internal keyword is an access modifier for types and type members. We can declare a class as internal or its member as internal. Internal members are accessible only within files in the same assembly (.dll). In other words, access is limited exclusively to classes defined within the current project assembly.
 
Accessibility:
 
In same assembly (public) 
  • Can be accessed by objects of the class
  • Can be accessed by derived classes
In other assembly (internal) 
  • Cannot be accessed by object
  • Cannot be accessed by derived classes
protected internal
 
The protected internal accessibility means protected OR internal, not protected AND internal.
 
In other words, a protected internal member is accessible from any class in the same assembly, including derived classes.
 
The protected internal access modifier seems to be a confusing but is a union of protected and internal in terms of providing access but not restricting. It allows:  
  • Inherited types, even though they belong to a different assembly, have access to the protected internal members.
  • Types that reside in the same assembly, even if they are not derived from the type, also have access to the protected internal members.
     

Default access

 
A default access level is used if no access modifier is specified in a member declaration. The following list defines the default access modifier for certain C# types:
 
enum: The default and only access modifier supported is public.
 
class: The default access for a class is private. It may be explicitly defined using any of the access modifiers.
 
interface: The default and only access modifier supported is public.
 
struct: The default access is private with public and internal supported as well.
 
The default access may suffice for a given situation, but you should specify the access modifier you want to use to ensure proper application behavior