我正在尝试将背景图像添加到文本框但是在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;
}
}
删除了引用,重新添加它们,构建/清理解决方案并重建但没有任何内容。 只有当我尝试将背景添加到文本框时才会出现这些错误。
答案 0 :(得分:1)
假设有图像的img文件夹在Project下(不在debug文件夹下,理想情况下它不应该在Debug文件夹中)并且image的BuildAction设置为Resource,你可以试试这个:
new BitmapImage(new Uri("pack://application:,,,/img/txtBackground.png", UriKind.Absolute));
如果你在调试文件夹中有img,那么你必须达到
new Uri(@"bin/Debug/img/txtBackground.png", UriKind.Relative)
答案 1 :(得分:0)
你的Uri应该阅读
new Uri(@"/img/txtBackground.png", UriKind.Relative)
至少这是错误信息所说的内容。
答案 2 :(得分:0)
你也可以试试这个:
textImageBrush.ImageSource =new BitmapImage("/Projectname;Component/img/txtBackground.png");
图片Build Action
必须设为Resource
。