윈폼이나 asp.net 에서는 간단하게 dataview 등을 이용하면 간단( sort 이용)하게 정렬되는데

모바일에서는 DataView는 사용 되긴 되는데 정렬이 안된다 (나만그런가???)

그래서 허접하게 BindingSource 컨트롤을 사용해서 정렬했습니다.

 

        /// <summary>
        /// 무작위로 들어간 숫자를 정렬해줌
        /// </summary>
        /// <param name="_s"></param>
        /// <returns></returns>
        public static string[] SortedNumbers( string[] s){
           string[] ReloadNumbers = new string[8];

           
            DataTable dt = new DataTable("TempNumbers");
            dt.Columns.Add("NN", typeof(int));
            for (int i = 1; i < s.Length-1;i++)
            {
                DataRow row = dt.NewRow();
                row["NN"] = s[i];
                dt.Rows.Add(row);
            }
            BindingSource bs = new BindingSource();
            bs.DataSource = dt;
            
            bs.Sort = "NN asc ";

            IEnumerator ie = bs.GetEnumerator() as IEnumerator;

            ReloadNumbers[0] = s[0];
            int row_cnt = 1;
            while(ie.MoveNext()){

                DataRowView dv = ie.Current as DataRowView;
                string ss=  dv["NN"].ToString();
                ReloadNumbers[row_cnt] = ss;
                row_cnt++;
            }
            ReloadNumbers[7] = s[7];

            return ReloadNumbers;
        }

파일다운로드

 

http://www.codeguru.com/columns/dotnettips/article.php/c7005

 

// Remember to add the following using statements to your code
// using System.Net;
// using System.IO;

public static int DownloadFile(String remoteFilename,
                               String localFilename)
{
  // Function will return the number of bytes processed
  // to the caller. Initialize to 0 here.
  int bytesProcessed = 0;

  // Assign values to these objects here so that they can
  // be referenced in the finally block
  Stream remoteStream  = null;
  Stream localStream   = null;
  WebResponse response = null;

  // Use a try/catch/finally block as both the WebRequest and Stream
  // classes throw exceptions upon error
  try
  {
    // Create a request for the specified remote file name
    WebRequest request = WebRequest.Create(remoteFilename);
    if (request != null)
    {
      // Send the request to the server and retrieve the
      // WebResponse object
      response = request.GetResponse();
      if (response != null)
      {
        // Once the WebResponse object has been retrieved,
        // get the stream object associated with the response's data
        remoteStream = response.GetResponseStream();

        // Create the local file
        localStream = File.Create(localFilename);

        // Allocate a 1k buffer
        byte[] buffer = new byte[1024];
        int bytesRead;

        // Simple do/while loop to read from stream until
        // no bytes are returned
        do
        {
          // Read data (up to 1k) from the stream
          bytesRead = remoteStream.Read (buffer, 0, buffer.Length);

          // Write the data to the local file
          localStream.Write (buffer, 0, bytesRead);

          // Increment total bytes processed
          bytesProcessed += bytesRead;
        } while (bytesRead > 0);
      }
    }
  }
  catch(Exception e)
  {
    Console.WriteLine(e.Message);
  }
  finally
  {
    // Close the response and streams objects here
    // to make sure they're closed even if an exception
    // is thrown at some point
    if (response     != null) response.Close();
    if (remoteStream != null) remoteStream.Close();
    if (localStream  != null) localStream.Close();
  }

  // Return total bytes processed to caller.
  return bytesProcessed;

 

Finally, here's an example of using the DownloadFile function.

int read = DownloadFile("http://www.mysite.com/problem1.jpg",
                        "d:\\test.jpg");
Console.WriteLine("{0} bytes written", read);

DataSet 값 불러오기

 string sql = "SELECT * FROM TEST";
    //아답터 생성
    this._DataAdapter = new System.Data.OleDb.OleDbDataAdapter();
    

//아답터 쿼리가져오기
    _DataAdapter.SelectCommand = new System.Data.OleDb.OleDbCommand(sql , this._Conn );

 

    //데이터셋 만들기
    this._DataSet = new DataSet();


    //아답터 쿼리담기
    this._DataAdapter.Fill(this._DataSet );


    //테이블 만들기
    this._DataTable = this._DataSet.Tables[0];
   
    this._DataRowCollection = this._DataTable.Rows;

 

    //Get Data
    foreach (DataRow dr in this._DataRowCollection){      

        //필드안에 값 불러오기

         for(int i=0; i< _DataTable.Columns.Count; i++){          
            this.richTextBox1.Text += "\n"+dr[i];     
         }
     
    }

 

업데이트

    System.Data.DataRow row  = this._DataTable.NewRow();
   
    row["comm"] = "8";  
    _DataTable.Rows.Add(row);    

    
    string sqlstr ="insert into test(comm) values(?);"; 
  
    this._DataAdapter.InsertCommand = new System.Data.OleDb.OleDbCommand( sqlstr  , this._Conn ); 
    
    
    this._DataAdapter.InsertCommand.Parameters.Add("comm",System.Data.OleDb.OleDbType.VarChar ,50 , "comm" );
    
    this._DataAdapter.Update( this._DataSet );
    this.dataGrid1.DataSource =  this._DataSet.Tables[0];

 

 


 
  }

메소드 응용

public static SqlDataAdapter CreateCustomerAdapter(SqlConnection conn)
{
  SqlDataAdapter da = new SqlDataAdapter();
  SqlCommand cmd;

  // Create the SelectCommand.

  cmd = new SqlCommand("SELECT * FROM Customers " +
                       "WHERE Country = @Country AND City = @City", conn);

  cmd.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
  cmd.Parameters.Add("@City", SqlDbType.NVarChar, 15);

  da.SelectCommand = cmd;

  // Create the InsertCommand.

  cmd = new SqlCommand("INSERT INTO Customers (CustomerID, CompanyName) " +
                       "VALUES (@CustomerID, @CompanyName)", conn);

  cmd.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
  cmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

  da.InsertCommand = cmd;

  return da;
}

http://www.codeplex.com/wlwSyntaxHighlighter

 

 

Writer 를 쓰시는 분들을 위한 SyntaxHighlighter

 

Windows Live Writer.png
Insert window:
Code.png
Plugin options:
SyntaxHighlighter Options.png
SyntaxHighlighter Options (2).png

How to Use

1. Your Blog Space Settings

1. Upload the SyntaxHighlighter files on your weblog space.
  • dp.SyntaxHighlighter/Scripts
  • dp.SyntaxHighlighter/Styles

2. Add JavaScript and CSS to your weblog page.
<link type="text/css" rel="stylesheet" href="Styles/SyntaxHighlighter.css"></link>
<script language="javascript" src="Scripts/shCore.js"></script>
<script language="javascript" src="Scripts/shBrushCSharp.js"></script>
<script language="javascript">
window.onload = function() {
    dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
    dp.SyntaxHighlighter.HighlightAll('code');
};
 </script>

shCore.js is necessary. You can add only other shBrush{language name}.js that needed.

2. Windows Live Writer Settings

  1. Install the SyntaxHighlighter for Windows Live Writer plugin.
  2. Update weblog style. You can update style from menu "Weblog"-"Edit Weblog Settings..." and "Editing" tab.

3. How to Insert Code

  1. You can insert code from sidebar or menubar.

Last edited Dec 18 2008 at 11:25 PM by jz5, version 12

Want to leave feedback?
Please use Discussions or Reviews instead.

Downloads

Directory.GetCurrentDirectory();

 

.NET Framework 클래스 라이브러리

Directory.GetCurrentDirectory 메서드

응용 프로그램의 현재 작업 디렉터리를 가져옵니다.

네임스페이스: System.IO
어셈블리: mscorlib(mscorlib.dll)

 

출처 : http://msdn.microsoft.com/ko-kr/library/system.io.directory.getcurrentdirectory(VS.80).aspx

스마트 장치 개발

스마트 장치 개발 작업 절차

업데이트: 2007년 11월

Visual Studio에서는 Pocket PC, Smartphone 등의 Windows CE 및 Windows Mobile 기반 스마트 장치에서 실행되는 소프트웨어를 개발할 수 있도록 통합된 지원을 제공합니다. Visual C# 또는 Visual Basic을 사용하여 .NET Compact Framework에서 실행되는 관리되는 응용 프로그램을 작성하거나 Visual C++를 사용하여 네이티브 응용 프로그램을 작성할 수 있습니다. 어떤 언어를 선택하든지 데스크톱 응용 프로그램을 개발할 때와 같은 코드 편집기, 디자이너 및 디버거 인터페이스를 사용합니다. 선택한 언어에 사용할 수 있는 스마트 장치 프로젝트 템플릿 중 하나를 선택한 다음 코딩을 시작하기만 하면 됩니다.

또한 Visual Studio에서는 에뮬레이터를 제공하므로 실제 장치가 없어도 개발 컴퓨터에서 코드를 실행하고 디버그할 수 있습니다.

장치 연결(스마트 장치 작업 절차)

가상 PC 세션, DMA, Bluetooth, ActiveSync 없음, 문제 해결 등

Visual Basic 및 Visual C#(스마트 장치 작업 절차)

프로젝트 만들기, 소스 공유, 플랫폼 변경, 코드 조각, 기본 대상 변경 등

Visual C++(스마트 장치 작업 절차)

C++ 장치 프로젝트 만들기, eMbedded Visual C++ 마이그레이션, SQL Server Compact 3.5 추가, 다중 플랫폼 솔루션 개발, MFC ActiveX 호스트 만들기 등

디버깅(스마트 장치 작업 절차)

프로세스에 연결, 혼합 솔루션 디버깅, 장치 레지스트리 변경 등

데이터(스마트 장치 작업 절차)

데이터베이스 만들기 및 관리, 프로젝트에 데이터 소스 추가, 쿼리 작성, 마스터-세부 관계 처리, 결과 집합 또는 데이터 집합 생성 등

패키징(스마트 장치 작업 절차)

CAB 프로젝트 만들기, 바로 가기 만들기, 장치 레지스트리 편집 등

보안(스마트 장치 개발 작업 절차)

인증서 가져오기, 보안 모델 쿼리, 파일 서명, 제공 장치 등

테스트 도구(스마트 장치 작업 절차)

단위 테스트 만들기, 테스트 디버깅 등

 

출처 : http://msdn.microsoft.com/ko-kr/library/ms184401.aspx

http://msdn.microsoft.com/ko-kr/library/ms229684.aspx

 

방법: Pocket PC에서 DataGrid 사용

업데이트: 2007년 11월

이 예제에서는 DataGrid 컨트롤을 폼과 함께 사용하여 DataGrid 컨트롤에서 선택된 레코드를 보고 편집하며 새 레코드를 데이터베이스에 추가하는 방법을 보여 줍니다. .NET Compact Framework에서는 DataGrid 셀 편집이 지원되지 않으므로 DataGrid 값을 편집할 수 있도록 사용자 인터페이스가 제공되어야 합니다. 이 예제에서는 Visual Studio와 함께 설치되는 Northwind 데이터베이스를 사용합니다.

참고:

.NET Compact Framework 버전 2.0을 사용하는 경우 DataGrid 컨트롤을 사용하려면 프로젝트에 System.Windows.Forms.DataGrid.dll에 대한 참조를 추가해야 합니다.

BindingSource 개체는 데이터베이스에서 현재 선택된 레코드에 대한 액세스를 제공하고, 이 레코드는 요약 및 편집 폼의 생성자로 전달되어 모든 폼에서 동일한 바인딩 소스가 사용되도록 합니다. 데이터 바인딩 컨트롤 외에도 BindingSource 개체는 현재 행의 DataRowView 개체를 반환할 수 있습니다. DataRowView를 사용하여 열의 현재 값을 확인하는 등 여러 가지 목적으로 데이터에 액세스할 수 있습니다. 요약 및 편집 폼에 대한 이 예제에서는 데모용으로 두 개의 열만 사용합니다.

또는 DataGrid 컨트롤의 스마트 태그에 대한 바로 가기 메뉴에서 데이터 폼 생성을 선택하여 Visual Studio가 요약 및 편집 폼을 자동으로 생성하도록 할 수 있습니다. 이 기능에 대한 자세한 내용은 방법: 데이터 응용 프로그램에 대한 요약 및 편집 뷰 생성(장치)을 참조하십시오.

이 응용 프로그램에는 다음 표에 설명된 폼이 있습니다. 이 표에는 또한 해당 메뉴 옵션도 나열되어 있습니다.

기능

메뉴 옵션

기본 폼

(Form1)

DataGrid 컨트롤을 표시합니다.

New

데이터베이스에 새 레코드를 추가하고 EditView 폼을 표시합니다.

Edit

EditView 폼을 표시합니다.

SummaryView

보기 편하도록 최적화하여 현재 레코드의 열 값을 표시합니다.

(없음)

EditView

편집하기 편하도록 최적화하여 현재 레코드의 열 값을 표시합니다.

Done

대화 상자에서 확인을 눌러 데이터베이스를 업데이트한 다음 기본 폼을 표시합니다.

Cancel

대화 상자를 취소하고 기본 폼을 표시합니다.

프로젝트를 만들고 기본 폼을 디자인하려면
  1. Visual Studio에서 스마트 장치 프로젝트를 만들고 대상 플랫폼을 Windows Mobile 5.0 Pocket PC SDK 또는 Windows Mobile 6 Professional SDK로 설정합니다.

  2. 데이터 메뉴에서 새 데이터 소스 추가를 클릭합니다.

  3. 데이터 소스 구성 마법사에서 Microsoft SQL Server Compact Edition(.NET Framework Data Provider for SQL Server CE)을 사용하여 Northwind 데이터베이스에 연결합니다. Northwind 데이터베이스인 Northwind.sdf는 \Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples 폴더에 설치되어 있습니다.

    참고:

    Windows Vista에서 Northwind 데이터베이스에 액세스하려면 관리자로 Visual Studio를 실행해야 합니다. 데이터베이스를 추가하는 방법에 대한 자세한 내용은 방법: 장치 프로젝트에 데이터베이스 추가를 참조하십시오.

  4. 마법사의 데이터베이스 개체 선택 페이지에서 Products 테이블과 이 테이블의 모든 열을 선택합니다.

  5. 도구 상자에서 DataGrid 컨트롤을 폼에 추가합니다. 원하는 대로 해당 크기와 레이아웃 속성을 설정합니다.

  6. DataSource 속성을 Products 테이블로 설정합니다. Visual Studio에서 프로젝트에 NorthwindDataSet, ProductsBindingSource 및 ProductsTableAdapter 개체를 추가합니다.

  7. DataGridTableStyle 개체를 TableStyles 컬렉션에 추가하여 DataGrid 컨트롤이 테이블의 한두 열을 표시하도록 합니다. 속성 창에서 TableStyles 속성을 클릭합니다. 이 작업으로 DataGridTableStyle 컬렉션 편집기 대화 상자가 표시됩니다. 그런 후 다음 작업을 수행합니다.

    1. TableStyles 컬렉션에 DataGridTableStyle 개체를 추가합니다.

    2. MappingName 속성으로 "Products"를 지정합니다.

    3. GridColumnStyle 속성을 클릭합니다. 이 작업으로 DataGridColumnStyle 컬렉션 편집기 대화 상자가 표시됩니다.

    4. GridColumnStyles 컬렉션에 DataGridTextBoxColumn 개체를 추가합니다.

    5. MappingName 속성을 클릭하고 Product Name을 선택합니다.

    6. 원하는 머리글 텍스트와 너비를 설정합니다.

    7. 추가 열에 대해 반복합니다.

    8. 대화 상자를 닫습니다.

  8. 각각 요약 뷰와 편집 뷰로 사용할 두 개의 폼을 프로젝트에 추가합니다. 각각의 이름을 SummaryView와 EditView로 지정합니다.

  9. SummaryView 및 EditView 폼의 생성자에 BindingSource 개체를 가져오는 매개 변수를 추가합니다. 이러한 폼에서 CurrentBindingSouce라는 전역 변수를 선언하여 생성자에 전달된 BindingSource 개체로 설정합니다. 이것은 InitializeComponent 메서드가 호출되기 전에 설정되어야 합니다.

    Visual Basic 개발자는 코드 창의 오른쪽 위에 있는 메서드 이름 목록에서 New 메서드를 추가하여 폼에 Sub New를 추가해야 합니다.

     

private BindingSource CurrentBindingSource;
public SummaryView(BindingSource bsource)
{
    CurrentBindingSource = bsource;
    InitializeComponent();
}

 

 

기본 폼에서 New라는 MenuItem 개체(MenuItem1)와 Edit라는 다른 개체(MenuItem2)를 추가합니다. New 및 Edit의 Click 이벤트에 대해 다음 코드를 추가합니다.

// Add new record.
private void menuItem1_Click(object sender, EventArgs e)
{
    productsBindingSource.AllowNew = true;
    productsBindingSource.AddNew();
    EditView EditViewDialog = new EditView(productsBindingSource);
    if (EditViewDialog.ShowDialog() != DialogResult.OK)
    {
        productsBindingSource.CancelEdit();
    }
    else
    {
        ProductsBindingSource.EndEdit();
        this.productsTableAdapter.Update(this.northwindDataSet);
     }
}
// Edit record (Edit).
private void menuItem2_Click(object sender, EventArgs e)
{
    EditView EditViewDialog = new EditView(productsBindingSource);
    if (EditViewDialog.ShowDialog() != DialogResult.OK)
    {
        productsBindingSource.CancelEdit();
    }
    else
    {
        productsBindingSource.EndEdit();
        this.productsTableAdapter.Update(this.northwindDataSet);
    }
}

기본 폼에서 DataGrid 컨트롤에 대해, Pocket PC에서 작업 키를 누르면 발생하는 KeyDown 이벤트에 대한 코드를 추가합니다. 이 작업으로 SummaryView 폼이 표시됩니다.

// Action button pressed.
private void dataGrid1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        SummaryView SummaryViewDialog =
          new SummaryView(productsBindingSource);
        SummaryViewDialog.ShowDialog();
     }
}

요약 뷰를 만들려면

  • SummaryView 폼에 다음 컨트롤을 추가합니다.

    • Product Name 제목(예: "Product Name:")에 대한 Label 컨트롤

    • Product Name 값에 대한 Label 컨트롤

    • Discontinued 값에 대한 Label 컨트롤. 이 컨트롤은 Products 테이블의 Discontinued 열 값이 true인 경우에만 표시됩니다. 이 레이블을 빨간 글꼴로 "DISCONTINUED"라고 지정합니다.

  • SummaryView 폼에 대한 생성자에 다음 코드를 추가하여 데이터 바인딩을 설정합니다. CurrentBindingSource라는 폼 변수를 선언하여 폼의 생성자에서 전달된 BindingSource 인스턴스로 설정되도록 합니다. DataRowView 개체는 Discontinued 열이 true이고 Discontinued 레이블이 표시되는지 여부를 결정합니다.

  •  

     

     

    private BindingSource CurrentBindingSource;
    public SummaryView(BindingSource bsource)
    {
        CurrentBindingSource = bsource;
        InitializeComponent();
        // Bind the label that shows the product name.
        ProductNameLabelVal.DataBindings.Add("Text",
          CurrentBindingSource, "Product Name");
        // Show the Discontinued label if
        // that value is true in the database.
        DataRowView drView;
        drView = (DataRowView) CurrentBindingSource.Current;
        if (drView["Discontinued"] == true)
        {
            DiscontinuedLabel.Visible = true;
        }
        else
        {
            DiscontinuedLabel.Visible = false;
        }
    }

     

     

    편집 뷰를 만들려면

    1. Microsoft.WindowsCE.Forms 네임스페이스에 대한 참조를 프로젝트에 추가합니다.

    2. InputPanel 구성 요소를 도구 상자에서 EditView 폼으로 끌어 옵니다. 텍스트 상자에 텍스트를 입력할 수 있는 SIP(Soft Input Panel)를 사용자에게 제공하는 데는 하나의 인스턴스만 필요합니다.

    3. 폼에 다음 컨트롤을 추가합니다.

      • Product Name 텍스트 상자에 대한 Label 컨트롤

      • Pruduct Name 열에 대한 TextBox 컨트롤

      • Discontinued 열에 대한 CheckBox 컨트롤. 이 컨트롤의 ThreeState 속성을 true로 설정합니다.

    4. 데이터 바인딩을 설정하려면 폼의 생성자에서 InitializeComponent 호출 뒤에 다음 코드를 추가합니다. 이 코드는 새 레코드를 추가하거나 기존 레코드를 편집하는 작업을 수행합니다. 새 레코드가 추가되면 DataRowView 개체는 Discontinued 열의 값이 null인지 확인하고 바인딩의 NullValue 속성을 CheckState 속성의 Indeterminate 값으로 설정합니다.

      public EditView(BindingSource bsource)
      {
          CurrentBindingSource = bsource;
           InitializeComponent();
           CurrentBindingSource = bsource;
           InitializeComponent();
           //  Add the bindings.
           productNameTextBox.DataBindings.Add("Text",
             CurrentBindingSource, "Product Name");
           DataRowView drView;
           drView = (DataRowView) CurrentBindingSource.Current;
           if (drView("Discontinued") == null)
           {
               DiscontinuedCheckBox.DataBindings.Add("CheckState",
                 CurrentBindingSource, "Discontinued", true,
                 DataSourceUpdateMode.OnValidation,
                 CheckState.Indeterminate);
           }
           else
           {
                DiscontinuedCheckBox.DataBindings.Add("Checked",
                  CurrentBindingSource, "Discontinued");
           }
      }

    간단한 모듈등록하기

    실버라이트 프로젝트

    image

     

    이 프로젝트에서는 추가로

    image

    DLL을 추가해야합니다.

     

    Shell.xaml 는 맨처음 실행되는 페이지 입니다.

    <UserControl x:Class="HelloWorld.Shell"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
                 Width="400" Height="300">
        <ItemsControl Name="MainRegion" Regions:RegionManager.RegionName="MainRegion"/>
    </UserControl>

     

    Bootstrapper.cs

    using System.Windows;
    using Microsoft.Practices.Composite.Modularity;
    using Microsoft.Practices.Composite.UnityExtensions;
    
    namespace HelloWorld
    {
        public class Bootstrapper : UnityBootstrapper
        {
            protected override DependencyObject CreateShell()
            {
                Shell shell = Container.Resolve<Shell>();
                Application.Current.RootVisual = shell;
                return shell;
            }
    
            protected override IModuleCatalog GetModuleCatalog()
            {
                ModuleCatalog catalog = new ModuleCatalog()
                .AddModule(typeof(HelloWorldModule.HelloWorldModule));
                return catalog;
            }
        }
    }
    

    웹프로젝트

    image

    실버라이트 실행하는 웹페이지(이프로젝트는 크게 의미없습니다 )

     

    모듈 프로젝트 CALSilverlightModule.csproj

    image

    모듈 프로젝트는 (추가로 Microsoft.Practices.Composite 참조해야합니다).

     

    모듈프로젝트에서 아래의 코드를 삽입합니다.

    HelloWorldModule.cs

    using Microsoft.Practices.Composite.Modularity;
    using Microsoft.Practices.Composite.Regions;
    
    namespace HelloWorldModule
    {
        public class HelloWorldModule : IModule
        {
            private readonly IRegionManager regionManager;
    
            public HelloWorldModule(IRegionManager regionManager)
            {
                this.regionManager = regionManager;
            }
    
            public void Initialize()
            {
                regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView));
            }
    
        }
    }
    

    HelloWorldView.xaml

    <UserControl x:Class="HelloWorldModule.Views.HelloWorldView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
        <Grid x:Name="LayoutRoot" Background="White">
                <TextBlock Text="Hello World" Foreground="Green" 
    HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="24" 
    FontWeight="Bold"></TextBlock>
        </Grid>
    </UserControl>

    http://www.codeplex.com/Silverlight

     

    What is the Silverlight Toolkit?

    The Silverlight Toolkit is a collection of Silverlight controls, components and utilities made available outside the normal Silverlight release cycle. It adds new functionality quickly for designers and developers, and provides the community an efficient way to help shape product development by contributing ideas and bug reports. It includes full source code, unit tests, samples and documentation for 16 new controls covering charting, styling, layout, and user input.

    Get Started

     

     

    Deep Zoom Composer

    Overview


    We are pleased to present a technology preview of Deep Zoom Composer, a tool to allow the preparation of images for use with the Deep Zoom feature currently being previewed in Silverlight 2. The new Deep Zoom technology in Silverlight allows users to see images on the Web like they never have before. The smooth in-place zooming and panning that Deep Zoom allows is a true advancement and raises the bar on what image viewing should be. High resolution images need to be prepared for use with Deep Zoom and this tool allows the user to create Deep Zoom composition files that control the zooming experience and then export all the necessary files for deployment with Silverlight 2.

    + Recent posts