[Winodows Phone 7 control details] Silverlight toolkit for Windows Phone 7.1 control-5

Source: Internet
Author: User
Tags random sentences

In the early November S, Microsoft's Silverlight toolkit for phone released four new controls, both of which were more complex and useful.

6. autocompletebox

This control is similar to the input box in Ajax and can be associated with words. However, you need to generate a dictionary file and write code to load the word load. In the silverlgiht toolkit sample, we already have this example code (loremipsum.cs,loremipsum.txt. Here is only a Latin test file, so we need to implement the font file by ourselves ).

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<toolkit:AutoCompleteBox HorizontalAlignment="Left" Margin="63,43,0,0" Name="autoCompleteBox1" VerticalAlignment="Top" Width="317" Height="72" ItemsSource="{StaticResource words}" />
</Grid>
xmlns:data="clr-namespace:testNewControls.Data"
    <phone:PhoneApplicationPage.Resources>
<data:LoremIpsum x:Name="words"/>
</phone:PhoneApplicationPage.Resources>

This resource definition must be prior to autocomepletebox. Otherwise, a strange error will be reported.
The complete code of loremipsum. CS is as follows:

// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Public License (Ms-PL).
// Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.
// All other rights reserved.

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Resources;

namespace testNewControls.Data
{

public static class Extension
{
public static T Next<T>(this Random rnd, IList<T> list)
{
return list[rnd.Next(list.Count)];
}
}

/// <summary>
/// A class to return paragraphs of random sentences or a word list from lorem ipsum data.
/// </summary>
public class LoremIpsum : IEnumerable<string>
{
public enum Capitalization
{
None,
FirstWord,
AllWords
}

private static Random _rnd = new Random(42);

private static StringBuilder _builder = new StringBuilder();
private static List<string> _sentences;
private static List<string> _words;


/// <summary>
/// Returns random lorem ipsum sentences combined into a single string.
/// </summary>
/// <param name="sentenceCount">The nunmber of sentences.</param>
/// <returns>The paragraph, composed of random sentences.</returns>
public static string GetParagraph(int sentenceCount)
{
EnsureSentences();

_builder.Length = 0;

while (sentenceCount-- > 0)
{
_builder.Append(_rnd.Next(_sentences));
if (sentenceCount > 0)
{
_builder.Append(' ');
}
}

return _builder.ToString();
}

/// <summary>
/// Return an alphabetized, lower-case list of lorem ipsum words.
/// </summary>
public static ICollection<string> Words
{
get
{
EnsureWords();
return (ICollection<string>)_words;
}
}

/// <summary>
/// Get a string composed of random lorem ipsum words. Will not end with punctuation.
/// </summary>
/// <param name="wordCount">Number of words.</param>
/// <param name="capitalize">How to capitalize the words.</param>
/// <returns></returns>
public static string GetWords(int wordCount, Capitalization capitalization)
{
EnsureWords();

_builder.Length = 0;

while (wordCount-- > 0)
{
int position = _builder.Length;
_builder.Append(_rnd.Next(_words));
if (capitalization == Capitalization.AllWords || (position == 0 && capitalization == Capitalization.FirstWord))
{
_builder[position] = char.ToUpper(_builder[position]);
}

if (wordCount > 0)
{
_builder.Append(' ');
}
}

return _builder.ToString();
}

/// <summary>
/// Enumerates the Words property.
/// </summary>
/// <returns>The enumerator.</returns>
public IEnumerator<string> GetEnumerator()
{
return LoremIpsum.Words.GetEnumerator();
}

/// <summary>
/// Enumerates the Words property.
/// </summary>
/// <returns>The enumerator.</returns>
IEnumerator IEnumerable.GetEnumerator()
{
return LoremIpsum.Words.GetEnumerator();
}

/// <summary>
/// Reads the lorem ipsum sentences. Supplies some data in case reading fails, which
/// it will do at design time.
/// </summary>
private static void EnsureSentences()
{
if (_sentences == null)
{
_sentences = new List<string>();

StreamResourceInfo info = Application.GetResourceStream(new Uri("Data/LoremIpsum.txt", UriKind.Relative));
if (info != null)
{
Stream stream = info.Stream;
if (stream != null)
{
using (StreamReader reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
_sentences.Add(reader.ReadLine());
}
};
}
}

if (_sentences.Count == 0)
{
_sentences.Add("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
_sentences.Add("Maecenas porttitor congue massa.");
_sentences.Add("Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.");
_sentences.Add("Nunc viverra imperdiet enim.");
_sentences.Add("Fusce est.");
}
}
}

/// <summary>
/// Creates an alphabetized list of the words from the lorem ipsum text.
/// </summary>
private static void EnsureWords()
{
char[] separators = { ' ', ',', '.' };

EnsureSentences();

if (_words == null)
{
Dictionary<string, object> temp = new Dictionary<string, object>();

foreach (string sentence in _sentences)
{
string[] words = sentence.Split(separators, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words)
{
temp[word.ToLower()] = null;
}
}

_words = new List<string>(temp.Keys);
_words.Sort();
}
}
}
}

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.