2014-11-23 3 views
1

Я хочу изменить цвет квадратов ResizeGrip, но я не могу найти подходящую недвижимость.Изменить цвет ResizeGrip в WPF

Я попытался перекрывая стиль ResizeGrip по умолчанию следующим образом:

<Style TargetType="{x:Type ResizeGrip}"> 
    <Setter Property="Foreground" Value="{StaticResource WindowBackground}" /> 
</Style> 

Я полагаю, что ControlTemplate слишком сложна, чтобы быть в состоянии достигнуть этого имущества от TemplatedParent.

Итак, я должен переопределить ControlTemplate? Получить контроль над кодом? Или что-то легче, что я пропустил?

ответ

2

Если мы пойдем проверить default template, мы видим, что эти свойства не связаны с шаблонами, у них есть жесткий набор «Прозрачный». Поэтому мы можем просто вздохнуть;

EDIT

<Style x:Key="blah" TargetType="{x:Type ResizeGrip}"> 
    <Setter Property="OverridesDefaultStyle" Value="True" /> 
    <Setter Property="Foreground" Value="Blue"/> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ResizeGrip}"> 
      <Border Background="{TemplateBinding Background}" 
        SnapsToDevicePixels="True" 
        Width="10" 
        Height="10"> 
       <Path Data="M7.677,7.5300003 L9.677,7.5300003 9.677,9.5300002 7.677,9.5300002 z M3.786,7.5300003 L5.7859998,7.5300003 5.7859998,9.5300002 3.786,9.5300002 z M0,7.5300003 L2,7.5300003 2,9.5300002 0,9.5300002 z M3.786,3.8280003 L5.7859998,3.8280003 5.7859998,5.8280003 3.786,5.8280003 z M7.677,3.7660003 L9.677,3.7660003 9.677,5.7659999 7.677,5.7659999 z M7.677,0 L9.677,0 9.677,2 7.677,2 z" Fill="{TemplateBinding Foreground}" Height="9.53" Stretch="Fill" VerticalAlignment="Top" Width="9.677"/> 
      </Border> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
</Style> 

Теперь вы можете пойти сделать это, что вы хотите;

<ResizeGrip Foreground="Red" Style="{StaticResource blah}"/> 

Надеюсь, это поможет, приветствия.

+0

Хорошо, кажется, что если я изменю свойство щетки '', я мог бы достичь своей цели. Я попробую, как только смогу. – Chnossos

+0

Изменение цвета работает, но форма захвата изменилась с треугольника на квадрат. Есть ли способ использовать стандартную (родную) форму? – Chnossos

+0

Я не помню, чтобы это был треугольник. Если вы хотите изменить цвет «Прямоугольник», вы можете просто переместить TemplateBinding для фона в свойство «Заполнить» в Rectangle. Весь этот шаблон буквально копируется/вставляется из документов msn для шаблона по умолчанию с добавлением свойства фона в шаблон, ничего необычного. –

0

Просто это изменит цвет фона; Зачем вам нужно редактировать шаблон по умолчанию и искать сложную душу?

<Grid> 
    <ResizeGrip Height="10" Background="Black"/> 
</Grid> 
+0

Я хочу изменить передний цвет каждого захвата, в том числе тот, который находится внутри '' управления. – Chnossos

+0

@ Кумар проверил ваше простое решение? Если это так и работает, то шаблон msn в своих документах не является [шаблоном по умолчанию] (http://msdn.microsoft.com/en-us/library/aa969824%28v=vs.110%29.aspx) в противном случае, ваш не будет работать по той причине, которую я передаю. –

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