Я новичок в 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>
Спасибо Anjum! – Ashwin
Похоже, что триггер "IsPressed" - это не то, что я хочу. Я хочу переключаться между холстами сразу после каждого нажатия кнопки. Изменение триггера с «IsPressed» на «IsChecked»/«IsEnabled» работает не так, как ожидалось. Любые указатели здесь будут оценены. – Ashwin
@NeoWin Затем вы должны изменить «Canvas: Visibility» на «Button: IsPressed» и сделать другой «Canvas: Visibility» зависящим от первого «Canvas: Visibility». Попробуйте написать Триггеры для этого. Вы также можете пойти для 'ToggleButton', чтобы сделать эту задачу проще. – AnjumSKhan