2016-04-02 2 views
0

Я новичок в XAML и WPF.WPF: Как изменить холст кнопки на печать?

Нажатие кнопки на кнопке Я хочу изменить холст, нарисованный на кнопке от ic_maximize до ic_restore, и переключить холст, когда кнопка снова нажата. Я использую библиотеку mahapps. Не могли бы вы рассказать мне, как это сделать?

Я пробовал много разных ссылок StackOverflow, но ни одна из них не имеет отношения к моей проблеме.

Вот стиль моей кнопки максимизации. У меня есть «IsPressed» триггеры готовы, но не в состоянии понять, что нужно установить, когда он triggered.-

<Canvas x:Key="ic_maximize" Width="13.3333" Height="13.3333" Canvas.Left="0" Canvas.Top="0"> 
    <Rectangle Width="11.7333" Height="11.7333" Canvas.Left="2.136" Canvas.Top="-0.536002" Stretch="Fill" StrokeThickness="1.06667" StrokeLineJoin="Round" Stroke="#FF999999"/> 
    <Rectangle Width="11.7333" Height="11.7333" Canvas.Left="5.36442e-007" Canvas.Top="1.6" Stretch="Fill" StrokeThickness="1.06667" StrokeLineJoin="Round" Stroke="#FF999999" Fill="#FF161616"/> 
</Canvas> 

<Canvas x:Key="ic_restore" Width="12" Height="12" Canvas.Left="0" Canvas.Top="0"> 
    <Rectangle Width="11.7333" Height="11.7333" Canvas.Left="5.36442e-007" Canvas.Top="0.266666" Stretch="Fill" StrokeThickness="1.06667" StrokeLineJoin="Round" Stroke="#FF999999"/> 
</Canvas> 

<Style x:Key="ExtendedMaxButtonStyle" 
    TargetType="{x:Type Button}" 
    BasedOn="{StaticResource MetroWindowButtonStyle}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid Name="grid" Background="{StaticResource MaxButton.Grid.background}"> 
         <!-- either one of the ic_maximize/ic_restore canvases should come here --> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter TargetName="grid" Property="Background" Value="{StaticResource MaxButton.MouseOver.Background}" /> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="True"> 
        <!-- What should I write here?--> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="False"> 
        <!-- What should I write here?--> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

ответ

1

Место и Canvas друг на друга, и скрывать друг на IsPressed.

+0

Спасибо Anjum! – Ashwin

+0

Похоже, что триггер "IsPressed" - это не то, что я хочу. Я хочу переключаться между холстами сразу после каждого нажатия кнопки. Изменение триггера с «IsPressed» на «IsChecked»/«IsEnabled» работает не так, как ожидалось. Любые указатели здесь будут оценены. – Ashwin

+0

@NeoWin Затем вы должны изменить «Canvas: Visibility» на «Button: IsPressed» и сделать другой «Canvas: Visibility» зависящим от первого «Canvas: Visibility». Попробуйте написать Триггеры для этого. Вы также можете пойти для 'ToggleButton', чтобы сделать эту задачу проще. – AnjumSKhan