SilverLight:一步一步学Silverlight 2系列(1):数据与通信之WebClient

来源:互联网 发布:岁月号事件真相知乎 编辑:程序博客网 时间:2024/04/29 04:51

 编写界面布局,XAML如下:   

<Grid Background="#46461F" x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded">
        
<Grid.RowDefinitions>
            
<RowDefinition Height="40"></RowDefinition>
            
<RowDefinition Height="*"></RowDefinition>
            
<RowDefinition Height="40"></RowDefinition>
        
</Grid.RowDefinitions>
        
<Grid.ColumnDefinitions>
            
<ColumnDefinition></ColumnDefinition>
        
</Grid.ColumnDefinitions>
        
<Border Grid.Row="0" Grid.Column="0" CornerRadius="15"
            Width
="240" Height="36"
            Margin
="20 0 0 0" HorizontalAlignment="Left">
            
<TextBlock Text="书籍列表" Foreground="White"
                   HorizontalAlignment
="Left" VerticalAlignment="Center"
                   Margin
="20 0 0 0"></TextBlock>
        
</Border>
        
<ListBox x:Name="Books" Grid.Row="1" Margin="40 10 10 10"
             SelectionChanged
="Books_SelectionChanged">
            
<ListBox.ItemTemplate>
                
<DataTemplate>
                    
<StackPanel>
                        
<TextBlock Text="{Binding Name}" Height="32"></TextBlock>
                    
</StackPanel>
                
</DataTemplate>
            
</ListBox.ItemTemplate>
        
</ListBox>
        
<Border Grid.Row="2" Grid.Column="0" CornerRadius="15"
            Width
="240" Height="36" Background="Orange"
            Margin
="20 0 0 0" HorizontalAlignment="Left">
            
<TextBlock x:Name="lblPrice" Text="价格:" Foreground="White"
                   HorizontalAlignment
="Left" VerticalAlignment="Center"
                   Margin
="20 0 0 0"></TextBlock>
        
</Border>
    
</Grid>

 

在web项目中添加一个。ashx文件

 

public class BookHandler : IHttpHandler
    
{
        
public static readonly string[] PriceList = new string[] 
        
"66.00",
        
"78.30",
        
"56.50",
        
"28.80",
        
"77.00"
        }
;
        
public void ProcessRequest(HttpContext context)
        
{
            context.Response.ContentType 
= "text/plain";
            context.Response.Write(PriceList[Int32.Parse(context.Request.QueryString[
"No"])]);

        }


        
public bool IsReusable
        
{
            
get
            
{
                
return false;
            }

        }

    }

 

在page.xmal.cs写道

 

public partial class Page : UserControl
    
{
        
public Page()
        
{
            InitializeComponent();
     
        }


        
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
        
{
            List
<Book> books = new List<Book>() 
        
new Book("Professional ASP.NET 3.5"),
        
new Book("ASP.NET AJAX In Action"),
        
new Book("Silverlight In Action"),
        
new Book("ASP.NET 3.5 Unleashed"),
        
new Book("Introducing Microsoft ASP.NET AJAX")
    }
;

            Books.ItemsSource 
= books;
    

        }


        
private void Books_SelectionChanged(object sender, SelectionChangedEventArgs e)
        
{

            Uri endpoint 
= new Uri(String.Format("http://localhost:49955/BookHandler.ashx?No={0}", Books.SelectedIndex));

            WebClient client 
= new WebClient();
            client.DownloadStringCompleted 
+= new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

            client.DownloadStringAsync(endpoint);
        }


        
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        
{
            
if (e.Error == null)
            
{
                lblPrice.Text 
= "价格:" + e.Result;
            }

            
else
            
{
                lblPrice.Text 
= e.Error.Message;
            }

        }

    
  
    }

最终实现为

 

 

原创粉丝点击