0

我正在尝试将背景图像添加到文本框,但在 textChange 事件中,图像会按预期消失,但是如果我退格或删除文本框中的文本使其为空,我会得到DirectoryNotFoundException处理。和目录:

找不到路径“C:\myProjectFolder\bin\Debug..img\txtBackground.png”的一部分。

XAML:

<TextBox Name="myTextBox" Width="200" TextChanged="myTextBox_TextChanged">

<TextBox.Background>
<ImageBrush ImageSource="img/txtBackground.png" />
</TextBox.Background>

C#代码:

private void myTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (myTextBox.Text == "")
{
ImageBrush textImageBrush = new ImageBrush();
textImageBrush.ImageSource =
new BitmapImage(
    new Uri(@"..img/txtBackground.png", UriKind.Relative)
);
myTextBox.Background = textImageBrush;    
}
else
{
myTextBox.Background = null;
}
}

删除了引用,重新添加了它们,构建/清理解决方案并重建,但什么也没有。这些错误仅在我尝试将背景添加到文本框时发生。

4

3 回答 3

1

假设有 image 的 img 文件夹在 Project 下(不在 debug 文件夹下,理想情况下不应该在 Debug 文件夹下)并且 image 的 BuildAction 设置为 Resource,你可以试试这个:

new BitmapImage(new Uri("pack://application:,,,/img/txtBackground.png", UriKind.Absolute));

如果你在 Debug 文件夹中有 img ,那么你必须达到那个

new Uri(@"bin/Debug/img/txtBackground.png", UriKind.Relative)
于 2013-10-04T06:13:06.873 回答
0

你也可以试试这个:

textImageBrush.ImageSource =new BitmapImage("/Projectname;Component/img/txtBackground.png");

图像Build Action必须设置为Resource

于 2013-10-04T06:16:17.113 回答
0

你的 Uri 应该是

new Uri(@"/img/txtBackground.png", UriKind.Relative)

至少那是错误消息所说的。

于 2013-10-04T05:58:28.423 回答