2013-01-24 38 views
0

我寫了這個代碼更改圖像:使用觸發器越來越System.Windows.Baml2006.TypeConverterMarkupExtension錯誤

<Image> 
    <Image.Style> 
     <Style TargetType="{x:Type Image}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding MyProperty}" Value="Play"> 
       <Setter Property="Source" Value="bin\debug\Tasto Play.jpeg"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding MyProperty}" Value="Pause"> 
       <Setter Property="Source" Value="bin\debug\Tasto Pause.jpeg"/> 
      </DataTrigger> 
     </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

但是當我運行調試錯誤出來。錯誤是System.Windows.Baml2006.TypeConverterMarkupExtension。

MyProperty是字符串。

有人可以幫助我嗎?

謝謝, Jacopo。

+1

「MyProperty」的類型是? – kmatyaszek

+0

你的綁定是什麼樣的? – plast1K

+0

這是完整的錯誤信息嗎?我確定必須有更多...請發佈完整的錯誤 –

回答

0

我想,也許是MyProperty屬性類型:如果是字符串,沒有問題,但如果是這樣,例如枚舉,您必須設置類型:

<Image> 
    <Image.Style> 
     <Style TargetType="{x:Type Image}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding MyProperty}" Value="{x:Type namespace:EnumType.Play}"> 
       <Setter Property="Source" Value="bin\debug\Tasto Play.jpeg"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding MyProperty}" Value="{x:Type namespace:EnumType.Pause"> 
       <Setter Property="Source" Value="bin\debug\Tasto Pause.jpeg"/> 
      </DataTrigger> 
     </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

也許可能是setter屬性,源(我認爲)是Uri類型的,也許你沒有格式化字符串,也許你必須使用absulute uri(用於測試),但我認爲它不是格式良好的字符串路徑,所以Xaml轉換器不能正確創建Uri類型。

希望這可以幫助,或給你一些想法。

+0

謝謝勞爾。 我認爲同樣的事情,但我沒有找到一個代碼,讓我得到在Uri類型的路徑。我認爲至少有一種方法可以使用觸發器更改Button.Content中的圖像。 – Jack

+0

嘗試使用這樣的路徑:「../YouProjectImageFolder/some_image。png「,然後將你的圖像包含在項目中,並在屬性BuildActio = Resource中設置 –

+0

我不明白,圖像保存在debug文件夾中,我應該在哪裏保存它? – Jack

0

要在項目中添加圖像作爲資源,必須單擊「Visual Studio菜單欄」中的「項目」,然後單擊「項目的屬性」。 然後一個帶有各種工具欄(如互聯網)的窗口將在您的屏幕上打開。 選擇「資源工具欄」 (查看圖片在http://i.stack.imgur.com/IjC0w.jpg) 然後單擊位於窗口頂部的「添加資源」按鈕旁邊的箭頭。 單擊「添加現有文件」並選擇文件。 然後進入「瀏覽解決方案窗口」並打開將具有新資源的「調試文件夾」。 在您添加了 的新資源上單擊「鼠標右鍵」,然後單擊「屬性」。 在屏幕左側會出現一個「屬性窗口」。 (查看圖片http://i.stack.imgur.com/NqIc1.jpg

你必須選擇「彙編操作」的「資源」項目。 現在,您可以將圖片用作wpf中的資源。

我希望這可以幫助。 Jacopo