Home

Реклама


Ещё одна возможность, доступная ранее только в WPF, теперь появилась и в Silverlight 4. Я имею в виду обрезание текста или Text Trimming.

Часто бывает, что у нас есть ограниченная область для текста, без возможности прокрутки. Если текст в данную область не помещается, то он обрезается, но выглядит это не очень красиво, так как текст может обрезаться, например, посередине буквы.



Вместо этого хочется, чтобы отображалась только та часть текста, которая помещается на экране и троеточие «…», говорящее о том, что не весь текст отображён. Раньше достичь такого поведения было трудно, требовалось делать много работы вручную. Теперь же у элемента управления TextBlock есть свойство TextTrimming, которое надо установить в значение «WordEllipsis»:

<TextBlock Text="Длинный текст о чём-то важном"
  Width="160" TextTrimming="WordEllipsis">
</TextBlock>


* This source code was highlighted with Source Code Highlighter.

Выглядеть текст будет следующим образом:



И даже, если мы увеличим размер шрифта, всё будет работать корректно:


Read more... )

В Silverlight 4 кроме большого числа основополагающих улучеший, появилось много маленьких и незаметных новых возможностей, о которых часто не говорят, но, которые, бывают очень полезны. Одну такую новую возможность мы сегодня и рассмотрим. Говорю я про новый класс трансформаций, а именно про составную трансформацию – CompositeTransform.



Раньше, если мы хотели, скажем, повернуть визуальный элемент на X градусов, наклонить и масштабировать его, нам требовалось объявлять группу трансформаций и задавать каждую трансформацию отдельно. Кроме всего прочего это налагало трудности при создании анимаций, так как приходилось задавать для каждой трансформации имя или обращаться к ней по индексу. Код, задающий несколько трансформаций, выглядел примерно так:

<Button Content="TransformGroup" Width="150" Height="50">
  <Button.RenderTransform>
    <TransformGroup>
      <ScaleTransform ScaleX="1.2" ScaleY="1.5" CenterX="75" CenterY="25"/>
      <SkewTransform AngleX="-10" AngleY="-5" CenterX="75" CenterY="25"/>
      <RotateTransform Angle="-10" CenterX="75" CenterY="25"/>
    </TransformGroup>
  </Button.RenderTransform>
</Button>


* This source code was highlighted with Source Code Highlighter.

Теперь же, в случае использования CompositeTransform мы можем объявить одну трансформацию вместо группы. При этом визуально результат будет аналогичным, но мы пишем более чистый и компактный код:

<Button Content="CompositeTransform" Width="150" Height="50">
  <Button.RenderTransform>
    <CompositeTransform CenterX="75" CenterY="25"
               ScaleX="1.2" ScaleY="1.5"
               SkewX="-10" SkewY="-5"
               Rotation="-10"/>
  </Button.RenderTransform>
</Button>

* This source code was highlighted with Source Code Highlighter.

Разница в коде ещё более заметна, если мы задаём трансформации используя, скажем, язык C#:

TransformGroup tg = new TransformGroup();

ScaleTransform scale = new ScaleTransform();
scale.ScaleX = 1.2;
scale.ScaleY = 1.5;
scale.CenterX = 75;
scale.CenterY = 25;
tg.Children.Add(scale);

SkewTransform skew = new SkewTransform();
skew.AngleX = -10;
skew.AngleY = -5;
skew.CenterX = 75;
skew.CenterY = 25;
tg.Children.Add(skew);

RotateTransform rotate = new RotateTransform();
rotate.Angle = -10;
rotate.CenterX = 75;
rotate.CenterY = 25;
tg.Children.Add(rotate);


* This source code was highlighted with Source Code Highlighter.

Тот же пример, но с использованием CompositeTransform:

CompositeTransform ct = new CompositeTransform();
ct.ScaleX = 1.5;
ct.ScaleY = 1.5;
ct.SkewX = -10;
ct.SkewY = -5;
ct.Rotation = -10;
ct.CenterX = 75;
ct.CenterY = 25;


* This source code was highlighted with Source Code Highlighter.


По мотивам CompositeTransform simplifies transforms in Silverlight 4 Beta [en]

Введение

То, что многие Сильверлайт разработчики давно ждали, произошло. Четвёртый Сильверлайт позволяет получить доступ к веб камере и микрофону. И пусть это не является революцией, в отличие от многих других новых возможностей (конкурирующие технологии поддерживали камеру и микрофон уже давно), но мощь, простота и удобство нового API заслуживают того, чтобы на эту часть функциональности четвёртого Сильверлайта Вы обратили самое пристальное внимание.

Работа с веб камерой и микрофоном

Итак, веб камера и микрофон на компьютере пользователя могут быть, а могут и отсутствовать. Также бывают ситуации, когда есть несколько источников видео и звука. Для того, чтобы определить с какми устройствами мы будем работать, а также в случае необходимости запросить у пользователя доступ к этим устройствам (Сильверлайт не позволяет без явного на то разрешения пользователя получить доступ к веб камере или микрофону), сществует статический класс CaptureDeviceConfiguration. Давайте посмотрим как с этим классом работать. Но предварительно создадим новый проект Сильверлайт приложения в Visual Studio 2010 и добавим на страницу MainPage.xaml некоторую XAML разметку:

<StackPanel Orientation="Vertical" VerticalAlignment="Center"
      HorizontalAlignment="Center">
  <Rectangle Width="320" Height="240" x:Name="videoRect"/>
  <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
    <ListBox x:Name="VideoSources">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding FriendlyName}"/>
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
    <ListBox x:Name="AudioSources">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding FriendlyName}"/>
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
  </StackPanel>
  <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
    <Button Margin="5" Content="Начать захват" x:Name="startCapture"/>
    <Button Margin="5" Content="Остановить захват" x:Name="endCapture"/>
  </StackPanel>
</StackPanel>

* This source code was highlighted with Source Code Highlighter.
Read more... )


Иногда может потребоваться установить или прочитать Cookies из Silverlight приложения.

Cookies представляют собой строку текста, которая сохраняется на стороне клиента и отправляется на сервер, установивший данную Cookie, при каждом запросе. Их обычно используют для хранения данных о сессии, аутентификации и другой информации, специфичной для конкретного пользователя.

Например, интернет магазин может сохранять в Cookies информацию о выбранных незарегистрированным пользователем товарах. И даже, если такой пользователь закроет окно браузера, он сможет зайти на сайт позже и закончить оформление заказа.

В случае, когда пользователь работает только с Silverlight приложением, лучше использовать изолированное хранилище (IsolatedStorage), оно позволяет хранить любые данные и имеет значительно больший, притом увеличиваемый размер.

Однако бывает, что есть страница, использующая Cookies, и на ней нет Silverlight приложений. При этом прочитать информацию, сохранённую в Cookies надо уже на другой странице из Silverlight приложения.

Как это сделать? Нет ничего проще.

Читать и устанавливать Cookies в Silverlight приложении мы можем, используя объект HtmlPage.Document, определённый в пространстве имён System.Windows.Browser.

Для установки Cookie надо вызвать метод SetProperty() и передать ему строку следующего формата: "Ключ=Значение;expires=Дата_Окончания_Хранения."

Вот типовой код:

private void SetCookie(string key, string value)
{
  DateTime expireDate =
  DateTime.Now + TimeSpan.FromDays(10);

  string cookie =
  String.Format("{0}={1};expires={2}", key,
  value, expireDate.ToString("R"));
  HtmlPage.Document.SetProperty("cookie", cookie);
}

* This source code was highlighted with Source Code Highlighter.


Прочитать же Cookies можно используя свойство HtmlPage.Document.Cookies.
Также привожу типовой код:

private string GetCookie(string key)
{
  string[] cookies = HtmlPage.Document.Cookies.Split(';');

  foreach (string cookie in cookies)
  {
    string[] keyValue = cookie.Split('=');
    if (keyValue.Length == 2)
    {
      if (keyValue[0].ToString().Trim() == key)
        return keyValue[1];
    }
  }
  return null;
}

* This source code was highlighted with Source Code Highlighter.

Есть такая замечательная штука как Silverlight Toolkit. Тулкит включает в себя множество полезных элементов управления, а также готовые темы для Silverlight приложений.



Вот примерный список тем:
  • Bubble Crème
  • Twilight Blue
  • Expression Dark
  • Expression Light
  • Whistler Blue
  • Bureau Black
  • Bureau Blue
  • Shiny Blue
  • Shiny Red
  • Rainier Purple
  • Rainier Orange

Как они выглядят Вы можете посмотреть, пройдя по ссылке в разделе “Theme Browser”.

Итак, если Вы хотите, чтобы Ваши Silverlight приложения выглядели нестандартно, но не хотите создавать дизайн с нуля, выполните несколько простых действий:


  • Скачайте и установите Silverlight Toolkit
  • В окне Solution Explorer проекта Silverlight приложения выберите References -> Add Reference.
    Подключите библиотеку System.Windows.Controls.Theming и выбранную Вами тему.
    В данной демонстрации я использую тему Expression Dark.



  • На XAML странице, где Вы хотите использовать темы подключите XML пространства имён:
    xmlns:expDark=
    "clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.ExpressionDark"
    xmlns:theming=
    "clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.Toolkit"


    * This source code was highlighted with Source Code Highlighter.
  • Поместите элементы управления, к которым надо применить тему в тэг этой темы:
    <expDark:ExpressionDarkTheme>
      <Button Content="Счастье" Width="200" Height="50" FontSize="26" Margin="10"></Button>
    </expDark:ExpressionDarkTheme>


    * This source code was highlighted with Source Code Highlighter.
  • Наслаждайтесь новым видом Вашего приложения

Read more... )

Многие, особенно начавшие знакомство с Silverlight со второй версии, спрашивают: “мне надо просто отобразить на web странице некоторую векторную графику с помощью Silverlight. Графика должна загружаться максимально быстро. Можно ли напрямую вставить XAML код в HTML страницу? ”
Ответ на этот вопрос прост: Да, Вы можете это сделать.
Делается это с помощью интересного синтаксиса. Надо определить на странице именованный блок сценария с типом type="text/xaml". И в коде вставки Silverlight плагина сослаться на этот блок (value="#xamlContent").

Выглядит это в коде следующим образом:

<html>
<head>
</head>
<body>
  <script type="text/xaml" id="xamlContent">
    <?xml version="1.0"?>
    <Grid Width="400" Height="400"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Rectangle
      Height="400"
      Width="400"
      Stroke="Black"
      Fill="Wheat"
      StrokeThickness="5"
      RadiusX="10.0"
      RadiusY="10.0"/>
   <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center"
          FontSize="40">XAML код в HTML</TextBlock>
    </Grid>
  </script>

  <div id="controlHost">
    <object
      id="silverlightControl"
      type="application/x-silverlight"
      height="400"
      width="400">
     <param name="Source" value="#xamlContent" />
    </object>
  </div>
</body>
</html>


* This source code was highlighted with Source Code Highlighter.


А открыв страницу в браузере, Вы увидите:





Представляю Вам новый доклад (скринкаст), посвящённый элементу управления DataForm. Данный элемент управления добавился в Silverlight Toolkit одновременно с выходом Silverlight 3.



Смотреть доклад:
http://www.techdays.ru/videos/1426.html


Как Вы, наверное, знаете, несколько дней назад вышла третья версия Сильверлайта. Увидели свет также и обновлённые инструменты разработки.

Так вот, теперь, чтобы добавить возможность работы вне браузера в Ваше Сильверлайт приложение, вручную  править XML файл конфигурации не обязательно (хотя по-прежнему возможно). Появился удобный графический интерфейс:

03

Щёлкнув правой кнопкой мыши по названию проекта в окне «Solution Explorer» выберите в контекстном меню пункт «Properties»

01

В появившемся окне установите галочку «Enable running application out of browser».

Всё, Ваше приложение может работать вне браузера.

Теперь щёлкните на кнопку «Out-of-Browser Settings…» и Вы увидите окно, как на первом рисунке.

02

Используя его можно задать различные настройки, например  имя, заголовок, высоту, ширину, описание и иконки для приложения. Также тут можно включить GPU акселерацию.

Настройки, сделанные в графическом интерфейсе сохраняются в файле «OutOfBrowserSettings.xml». Этот файл объединяется на этапе компиляции с «AppManifest.xml»

Важно отметить, что синтаксис файла манифеста поменялся относительно бета версии третьего Сильверлайта. В Silverlight 3 Beta 1 для настройки работы вне браузера использовалась секция «<Deployment.ApplicationIdentity>», тогда как в Silverlight 3 RTW используется «<Deployment.OutOfBrowserSettings>».


Вот и прошёл месяц, и мы, рады представить Вам второй выпуск нашего бюллетеня. Как всегда ждём от Вас откликов, мнений и предложений по улучшению бюллетеня и сайта silverlighter.ru в целом!

Содержание:


Читать бюллетень
Подписаться

Хочется сообщить Вам новость от Российского сообщества пользователей Silverlight – мы начинаем выпускать информационный бюллетень. Бюллетень будет выходить регулярно. Сейчас планируется делать два выпуска в месяц. Если Вы хотите написать статью, скринкаст или заметку для бюллетеня, задать вопрос, предложить идею или просто поговорить про RIA технологии – можете писать на e-mail: spugachev@gmail.com или в форум на нашем сайте: http://silverlighter.ru/forums/.

Читать бюллетень

Подписаться

Содержание первого выпуска: