1
저는 WPF가 새로 도입되었으며 이것이 왜 올바르게 작동하지 않는지에 대한 몇 가지 지침이 필요합니다.WPF의 다양한 하이라이트 이미지가있는 다중 ToggleButton 이미지
클릭하면 복원 버튼으로 변경되는 최대화 버튼을 만들려고합니다. 코드 뒤에서 변경 될 수있는 두 가지 스타일의 토글 버튼이 효과가 있다고 생각했습니다. 나는 먼저 최대화 버튼을 작동 시키려고 노력 중이며 문제가 발생했습니다. 'System.Windows.Controls.Image'는 Setter의 'System.Windows.Controls.Image.Source'속성에 유효한 값이 아닙니다. 내 xaml. 나는 완전히 무언가를 이해하지 못하는 것 같다. 어떤 도움이 가장 도움이 될 것입니다 :)
라이언
<Style x:Key="Maximize" TargetType="{x:Type ToggleButton}">
<Style.Resources>
<Image x:Key="MaxButtonImg" Source="/Project;component/Images/maxbutton.png" />
<Image x:Key="MaxButtonHighlight" Source="/Project;component/Images/maxbutton-highlight.png" />
</Style.Resources>
<Setter Property="ContentTemplate">
<Setter.Value>
<Image>
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="{DynamicResource MaxButtonImg}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="{DynamicResource MaxButtonHighlight}"/>
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</Setter.Value>
</Setter>
</Style>
<ToggleButton Name="MaxButton" Width="31" Height="31" BorderThickness="0" Click="MaxButton_Click" Margin="0,0,10,0" Tag="Max"
Style="{DynamicResource Maximize}" />
뒤에 내 코드는 다음과 같은 간단한 뭔가를 할 것이다 : 당신은 이상 마우스의 이미지를 변경하지 않으
private void MaxButton_Click(object sender, RoutedEventArgs e)
{
ToggleButton tg = (ToggleButton)sender;
if (tg.IsChecked == true) {
tg.Style = (Style)FindResource("Restore");
this.WindowState = WindowState.Maximized;
} else {
tg.Style = (Style)FindResource("Maximize");
this.WindowState = WindowState.Normal;
}
}
작동하지만 이미지를 변경하지 않고 강조 표시를 만들기 위해 IsMouseOver를 사용하고 있습니다. 각 주에는 2 개의 이미지가 있으며 일반 이미지와 마우스가 이미지 위에 있습니다.을 로 설정하고 Setter 속성 소스를 직접 이미지로 가져 와서 작업 할 수있었습니다. –
Ryan