WPF相对路径问题

时间:2010-01-02 19:09:02

标签: wpf wpf-controls

我创建了一个自定义的TaskButton控件来获取图像和文本。属性设置如下:

<custom:TaskButton Text="Calendar" ImagePath="Images/calendar.png" ... />

我的自定义控件类实现Text和ImagePath属性,自定义控件的控件模板(在Themes \ 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项目的所有引用。

知道为什么相对路径会失败?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我终于找到了问题所在。它实际上是在我的控件的C#支持类中。我将ImagePath属性声明为字符串,因为这就是我要指定图像的方式。哎呀 - 我的电话不好。该属性实际上应该是ImageSource属性,而不是字符串。 WPF有一个内置的ImageSourceConverter class,它将解析路径并返回指定的图像。因此,我只是将属性名称从ImagePath更改为Image,并将其类型从字符串更改为ImageSource。这解决了这个问题。

感谢Aviad P.对此采取了措施。没有显示属性声明的C#代码,它是无法解决的。我下次会发布所有代码和标记。