среда, 29 августа 2012 г.

WPF. Ресурсы и стили

Ресурсы очень важная часть WPF.
Тут я кратко опишу как создать ресурс и подключить его к форме, что бы испорльзовать.
Создаем ResourceDictionary
В моем случае в нем будет один стиль, который определяется для ТулБара.  Назвем его ToolBarStyle.xaml.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="SimpleToolBar" TargetType="{x:Type ToolBar}">
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToolBar}">
                    <Border x:Name="Border"  CornerRadius="3" 
                      BorderThickness="1"
                      BorderBrush="#404040">
                        <DockPanel >
                            <Thumb x:Name="ToolBarThumb" Width="10"/>
                            <ToolBarPanel x:Name="PART_ToolBarPanel"   IsItemsHost="true" Margin="0,1,2,2"/>
                        </DockPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

Для того что бы подключить его в форму нужно написать следующее 
<Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary 
                  Source="ToolBarStyle.xaml">
                </ResourceDictionary>               
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

Теперь наша форма будет видеть стили описанные в словаре ресурсов.
И соответственно используем
   <ToolBar  Name="toolBar1" Style="{StaticResource SimpleToolBar}"

вторник, 7 августа 2012 г.

Определить сообщение написано латинью или кирилицой (актуально для смс)

Простенькая функция, которая определяет является ли написанной на латыне строка или на кирилице.


         /// <summary>
        /// Определяем тип сообщения (кирилица или латынь)
        /// </summary>
        /// <param name="message"></param>
        /// <returns>cyr - если кирилица, lat - если латынь</returns>
        static public string CheckTypeOfMessage(string message)
        {
            //проверяем на наличие кириличных символов, если они есть - кирилица, нет - латынь
            foreach (char c in message)
            {
                int unicode = (int)c;
                if ((unicode >= 1040) && (unicode <= 1111))
                    return "cyr";

            }
            return "lat";

        }

C# Конвертация из одной кодировки в другую

Иногда возникает задача : конвертировать инфу из одной кодировки в другую. Это очень легко делается с помощью класса  Encoding, для того что бы не создавать велосипед

Вот собственно пример с пояснениями

/// <summary>
    /// Класс для конвертации из одной кодировки в другую
    /// </summary>
    public class EncoderConvertor
    {

        /// <summary>
        /// 
        /// </summary>
        /// <param name="To">Кодировка назначения</param>
        /// <param name="From">Кодировка, с которой кодируем</param>
        /// <param name="myString">Текст</param>
        /// <returns>Тескт в заданной кодировке</returns>
        public static string GetEncoding(Encoding To, Encoding From, String myString)
        {
        return  To.GetString(Encoding.Convert(From, To, From.GetBytes(myString)));
        }


        /// <summary>
        /// Кодирует из Unicode в UTF-8
        /// </summary>
        /// <param name="myString">Текст</param>
        /// <returns></returns>
        public static string GetEncoding(String myString)
        {
           return Encoding.UTF8.GetString(
                Encoding.Convert(
                Encoding.Unicode,
                Encoding.UTF8,
                Encoding.Unicode.GetBytes(myString)));
        
        }
    }