我已經創建了一個自定義TaskButton控件,它可以獲取圖像和文本。該屬性設置是這樣的:WPF相對路徑問題
<custom:TaskButton Text="Calendar" ImagePath="Images/calendar.png" ... />
我的自定義控件類實現文本和ImagePath的性質,以及自定義控制的控制模板(在主題\ Generic.xaml)設置它的內容是這樣,使用的RelativeSource對象得到圖像路徑:
<!-- Button Content -->
<StackPanel>
<Image Source="{Binding Path=ImagePath, RelativeSource={RelativeSource TemplatedParent}}" Width="24" Height="24" Stretch="Fill" Margin="10,0,0,0" />
<TextBlock Text="{TemplateBinding Text}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe UI" FontWeight="Bold" Margin="6,0,10,0" Foreground="Black" />
</StackPanel>
控制工作在大多數情況下罰款,但在特定的項目,到該按鈕的圖像的相對路徑不能正確解決,不顯示按鈕圖像。這是我到目前爲止所瞭解到的:
我在使用自定義控件時正確輸入路徑。如果我將圖像控件放置在具有相同相對路徑的相同設計表面上,則可以正確解析。
問題出在相對路徑上。如果我用絕對路徑替換相對路徑,路徑將被正確解析並顯示圖像。
正如我上面提到的,控制在大多數情況下工作正常。其中一個不起作用的情況是Prism 2.1項目,其中控制在Prism模塊中的用戶控件上實例化。該模塊是一個簡單的類庫,但它具有WPF項目的所有引用。
任何想法爲什麼相對路徑會失敗?在此先感謝您的幫助。
順便說一句,我知道我可以通過使用控件模板與ContentPresenter完成相同的事情。項目規格需要使用指定屬性的自定義控件。 – 2010-01-02 19:10:14
我出來的想法,你可以顯示相關的代碼是用你的自定義控件創建用戶控件嗎? – 2010-01-03 10:41:40