2016-02-15 3 views
4

Я пытаюсь изменить свойство Brush из следующего фрагмента кода из другого элемента управления, но не знаю, как добраться до этого свойства.Как изменить цвет кисти с помощью Pen в DrawingGroup.Children tag

Этот рисунок кисти определяется как Application.Resource ан app.xaml

<DrawingBrush x:Key="Disp_Origin" Stretch="Uniform"> 
     <DrawingBrush.Drawing> 
      <DrawingGroup> 
       <DrawingGroup.Children> 
        <GeometryDrawing Geometry="F1 M 720.099,497.862C 778.822,493.976 837.662,492.02 896.514,492.02"> 
         <GeometryDrawing.Pen> 
          <Pen Thickness="1.33333" MiterLimit="2.75" Brush="#FFA5AEB7"/> 
         </GeometryDrawing.Pen> 
        </GeometryDrawing>... 

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

Я не знаю, если это возможно

+0

Вы хотите изменить ресурс 'Disp_Origin' (вы не можете изменить его) или просто изменить цвет элемента управления (с установленным ресурсом)? – bars222

+0

Просто измените свойство Кисть метки Pen, внутри Disp_Origin – Guille

+0

Вы можете добавить еще один ресурс 'Disp_Origin_with_another_brush' и изменить весь результирующий чертеж' DrawingBrush', когда элемент управления сфокусирован или зависает (например, с помощью 'Trigger'). Я думаю, что это простое решение. – bars222

ответ

1

На самом деле я нашел, как это сделать. Но это требует кода. Наиболее важным является метод Clone(), который позволяет изменять ресурс управления, и вы должны установить этот ресурс кисти из кода позади. И, к сожалению, код плохо читается.

// Initializing code 
// And as mentioned in comments code for restore color 
DrawingBrush myBrush = (Application.Current.Resources["Disp_Origin"] as DrawingBrush).Clone(); 
testButton.Background = myBrush; 

// On hover or on focus code 
DrawingBrush settedBrush = testButton.Background as DrawingBrush; 
((System.Windows.Media.GeometryDrawing)(((System.Windows.Media.DrawingGroup) 
    (settedBrush.Drawing)).Children[0])).Pen.Brush = new SolidColorBrush(Colors.Red); 

Update

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

+0

Итак, этот код, клонировать ресурс в фоновом режиме кнопки для обработки последнего, не так ли? Код OnFocus может использоваться в любом элементе управления, который я хочу? (и, конечно, можно сфокусировать) – Guille

+0

Да. Также вы можете сохранить установленные кисти управления в приватных переменных класса окна и можете обновлять их, когда захотите. – bars222

+0

Если вы выглядите так хорошо, я немного задержу тест, но я хочу попробовать как можно скорее, потому что это может спасти мне много времени. Спасибо. – Guille

 Смежные вопросы

  • Нет связанных вопросов^_^