изменение цвета текста с помощью системных цветов из поля со списком - PullRequest
2 голосов
/ 17 августа 2011

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

<ToolBarTray.Resources>
<ObjectDataProvider MethodName="GetType" ObjectType="{x:Type sys:Type}" x:Key="colorsTypeOdp">
<ObjectDataProvider.MethodParameters>
<sys:String>System.Windows.Media.Colors, PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
 </ObjectDataProvider.MethodParameters>
 </ObjectDataProvider>

<ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}"    MethodName="GetProperties" x:Key="colorPropertiesOdp">
</ObjectDataProvider>
</ToolBarTray.Resources>

<ComboBox Name="colors" ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}" DisplayMemberPath="Name" SelectedValuePath="Name" MinWidth="100" ToolTip="Color" />

Я пытаюсь создать код события selectionChanged, который изменит текст на системный цвет, выбранный пользователем, если вам нужно больше кода или больше информации, дайте мне знать.ComboBox просто загружается с названием цвета, поэтому КАК использовать это имя, чтобы получить сам фактический цвет в коде события, чтобы установить текст в новый цвет?Спасибо, Говядина

1 Ответ

1 голос
/ 17 августа 2011

Здесь приведен пример привязки (с использованием значения поля со списком для заполнения прямоугольника), а ниже приведен пример изменения цвета надписи, которая помечает его (вы, очевидно, обновите выбранный текст вместо этого).

Связывание:

<StackPanel Orientation="Horizontal"
            xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <StackPanel.Resources>
        <ObjectDataProvider MethodName="GetType" 
                            ObjectType="{x:Type sys:Type}" 
                            x:Key="colorsTypeOdp">
            <ObjectDataProvider.MethodParameters>
                <sys:String>System.Windows.Media.Colors, PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
        <ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}"
                            MethodName="GetProperties" 
                            x:Key="colorPropertiesOdp" /> 
    </StackPanel.Resources>
    <!--  SelectedValuePath="Name" -->
    <ComboBox Name="colors" 
              ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}" 
              DisplayMemberPath="Name" 
              SelectedValuePath="Name"
              MinWidth="100" 
              ToolTip="Color" />
    <Rectangle Width="100"
               Height="50"
               Stroke="White"
               StrokeThickness="2">
        <Rectangle.Fill>
            <SolidColorBrush Color="{Binding ElementName=colors, Path=SelectedValue}" />
        </Rectangle.Fill>
    </Rectangle>
    <TextBlock x:Name="txtColor" 
               Foreground="White"
               Text="{Binding ElementName=colors, Path=SelectedValue}" />
</StackPanel>

Событие:

    colors.SelectionChanged += (s, e) => 
    {
        BrushConverter converter = new BrushConverter();
        txtColor.Foreground = converter.ConvertFromString(colors.SelectedValue.ToString()) as SolidColorBrush;
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...