2016-04-02 28 views
0

XAMLとWPFの新機能です。WPF:プレス上でボタンのキャンバスを変更する方法は?

オンボタンを押してボタンに描かれているキャンバスをic_maximizeからic_restoreに変更し、ボタンをもう一度押すとキャンバスを切り替える必要があります。私はmahappsライブラリを使用しています。このことについてどうやって行くのか教えてください。

私は多くの異なるStackOverflowリンクを試しましたが、それらのどれも私の問題には関係ありません。

ここに私の最大化ボタンのスタイルがあります。私は「IsPressedは」準備ができたが、それはお互いの上に

<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をtriggered.-時に設定する必要があるかを把握し、IsPressed時に1を非表示にすることができませんトリガがあります。

+0

ありがとうございましたAnjum! – Ashwin

+0

"IsPressed"トリガーは私が望むものではないようです。私はキャンバスを1回クリックするたびに切り替える必要があります。 "IsPressed"から "IsChecked"/"IsEnabled"にトリガを変更すると、期待どおりに動作しません。ここにあるすべてのポインターは高く評価されます。 – Ashwin

+0

@NeoWin次に、 'Canvas:Visibility'を' Button:IsPressed'で変更し、別の 'Canvas:Visibility'を作成して最初の' Canvas:Visibility'に依存させるべきです。そのためにトリガーを書き込んでみてください。 'ToggleButton'のためにこのロットをもっと簡単にすることもできます。 – AnjumSKhan

関連する問題