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