Я очень новичок в WPF и мне нужно несколько указателей, почему это не работает правильно.
Я пытаюсь сделать кнопку максимизации, которая при нажатии изменится на кнопку восстановления. Я думал, что кнопка переключения с 2 различными стилями, которые будут изменены в коде, может сработать. Сначала я пытаюсь заставить работать кнопку максимизации и столкнулся с проблемой. Я получаю сообщение об ошибке «System.Windows.Controls.Image», которое недопустимо для свойства «System.Windows.Controls.Image.Source» в Setter в моем xaml. Кажется, я чего-то не понимаю полностью. Любая помощь будет наиболее полезной:)
Ryan
<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;
}
}