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
2010-04-20 17:54:00