C# WPF图像装订&;转换器不工作 //在xaml中 //资源 //数据上下文 DataContext=“{x:静态本地:GlobalData.CustomServiceInfo}” //图像**URI源发生异常抛出** -------------------------------------------------------------------------- //代码 //模型 公共类CustomServiceInfo { 公共字符串名称{get;set;} 公共字符串HeadPicUrl{get;set;} 公共布尔状态{get;set;} } //初始化 公共主窗口() { GlobalData.CustomServiceInfo=新的CustomServiceInfo{ Name=“奈奈古”, HeadPicUrl=@”http://avatar.csdn.net/0/5/5/1_haifengzhilian.jpg", 状态=真, //类型=新Uri(“pack://application:,,,/“+”MahAppsDemo“+”组件/“+”图像/my.jpg”,UriKind.RelativeOrAbsolute) //类型=”pack://application:,,,/“+”MahAppsDemo“+”组件/“+”图像/my.jpg” }; 初始化组件(); } //自定义转换器 公共类LocalUriToImageConverter:IValueConverter { 公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性) { 字符串路径=(字符串)值; int BytesToRead=100; 尝试 { var image=新的位图图像(); WebRequest=WebRequest.Create(新Uri(路径,UriKind.Absolute)); 请求超时=-1; WebResponse=request.GetResponse(); Stream responseStream=response.GetResponseStream(); BinaryReader=新的BinaryReader(responseStream); MemoryStream MemoryStream=新的MemoryStream(); byte[]bytebuffer=新字节[BytesToRead]; int bytesRead=reader.Read(bytebuffer,0,BytesToRead); 而(字节读取>0) { memoryStream.Write(字节缓冲,0,字节读取); bytesRead=reader.Read(bytebuffer,0,BytesToRead); } image.BeginInit(); memoryStream.Seek(0,SeekOrigin.Begin); image.StreamSource=memoryStream; image.EndInit(); 返回图像; } 捕获(例外) { 返回新的BitmapImage(); } } 公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性) { 抛出新的NotImplementedException(); } }
异常消息是C# WPF图像装订&;转换器不工作 //在xaml中 //资源 //数据上下文 DataContext=“{x:静态本地:GlobalData.CustomServiceInfo}” //图像**URI源发生异常抛出** -------------------------------------------------------------------------- //代码 //模型 公共类CustomServiceInfo { 公共字符串名称{get;set;} 公共字符串HeadPicUrl{get;set;} 公共布尔状态{get;set;} } //初始化 公共主窗口() { GlobalData.CustomServiceInfo=新的CustomServiceInfo{ Name=“奈奈古”, HeadPicUrl=@”http://avatar.csdn.net/0/5/5/1_haifengzhilian.jpg", 状态=真, //类型=新Uri(“pack://application:,,,/“+”MahAppsDemo“+”组件/“+”图像/my.jpg”,UriKind.RelativeOrAbsolute) //类型=”pack://application:,,,/“+”MahAppsDemo“+”组件/“+”图像/my.jpg” }; 初始化组件(); } //自定义转换器 公共类LocalUriToImageConverter:IValueConverter { 公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性) { 字符串路径=(字符串)值; int BytesToRead=100; 尝试 { var image=新的位图图像(); WebRequest=WebRequest.Create(新Uri(路径,UriKind.Absolute)); 请求超时=-1; WebResponse=request.GetResponse(); Stream responseStream=response.GetResponseStream(); BinaryReader=新的BinaryReader(responseStream); MemoryStream MemoryStream=新的MemoryStream(); byte[]bytebuffer=新字节[BytesToRead]; int bytesRead=reader.Read(bytebuffer,0,BytesToRead); 而(字节读取>0) { memoryStream.Write(字节缓冲,0,字节读取); bytesRead=reader.Read(bytebuffer,0,BytesToRead); } image.BeginInit(); memoryStream.Seek(0,SeekOrigin.Begin); image.StreamSource=memoryStream; image.EndInit(); 返回图像; } 捕获(例外) { 返回新的BitmapImage(); } } 公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性) { 抛出新的NotImplementedException(); } },c#,wpf,C#,Wpf,异常消息是{“必须设置“UriSource”或“StreamSource”。}。 我认为转换没有工作,因为我在convert方法中设置了调试点,但在此之前抛出了异常 我不知道我上面的代码哪里出错了。 这是我在stackoverflow中的第一个问题。 请帮助我。谢谢!子控件在图像中定义。参考资料在图像中定义。请按如下方式更新xaml代码: //in xaml //resource <local:LocalUriToImageConverter x:Key="MyImageCo
{“必须设置“UriSource”或“StreamSource”。}
。
我认为转换没有工作,因为我在convert方法中设置了调试点,但在此之前抛出了异常
我不知道我上面的代码哪里出错了。
这是我在stackoverflow中的第一个问题。
请帮助我。谢谢!子控件在图像中定义。参考资料在图像中定义。请按如下方式更新xaml代码:
//in xaml
//resource
<local:LocalUriToImageConverter x:Key="MyImageConverter"/>
//datacontext
DataContext="{x:Static local:GlobalData.CustomServiceInfo}"
//image **exception throw at UriSource **
<Image Height="60" Width="60" >
<Image.Resources>
<BitmapImage UriSource="{Binding HeadPicUrl , Converter={StaticResource MyImageConverter}}" x:Key="image1" />
<FormatConvertedBitmap Source="{StaticResource image1}" x:Key="formattedImage" DestinationFormat="Gray32Float" />
</Image.Resources>
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="True">
<Setter Property="Source" Value="{StaticResource image1}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="False">
<Setter Property="Source" Value="{StaticResource formattedImage}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
--------------------------------------------------------------------------
//Code
//model
public class CustomServiceInfo
{
public string Name { get; set; }
public string HeadPicUrl { get; set; }
public bool Status { get; set; }
}
//init
public MainWindow()
{
GlobalData.CustomServiceInfo = new CustomServiceInfo {
Name = "nainaigu",
HeadPicUrl = @"http://avatar.csdn.net/0/5/5/1_haifengzhilian.jpg",
Status = true ,
//Type = new Uri("pack://application:,,,/" + "MahAppsDemo" + ";component/" + "Image/my.jpg", UriKind.RelativeOrAbsolute)
//Type = "pack://application:,,,/" + "MahAppsDemo" + ";component/" + "Image/my.jpg"
};
InitializeComponent();
}
//Custom Coverter
public class LocalUriToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string path = (string)value;
int BytesToRead = 100;
try
{
var image = new BitmapImage();
WebRequest request = WebRequest.Create(new Uri(path, UriKind.Absolute));
request.Timeout = -1;
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
BinaryReader reader = new BinaryReader(responseStream);
MemoryStream memoryStream = new MemoryStream();
byte[] bytebuffer = new byte[BytesToRead];
int bytesRead = reader.Read(bytebuffer, 0, BytesToRead);
while (bytesRead > 0)
{
memoryStream.Write(bytebuffer, 0, bytesRead);
bytesRead = reader.Read(bytebuffer, 0, BytesToRead);
}
image.BeginInit();
memoryStream.Seek(0, SeekOrigin.Begin);
image.StreamSource = memoryStream;
image.EndInit();
return image;
}
catch (Exception)
{
return new BitmapImage();
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
异常附带堆栈跟踪,您应该始终提供有关任何错误和异常的完整信息。包括堆栈跟踪。至于转换器,这是一个相当不错的转换器,你有;你真的应该用另一种方式来处理这个问题……转换器不应该包含像那样复杂、耗时的操作。如果您希望在这方面获得更多帮助,请提供一个可靠地再现问题的好方法。我很抱歉。我记得。这是我第一次。你能告诉我如何再次编辑我的问题吗。请查看你文章底部的链接。谢谢。我再次编辑。并添加一张关于表达式的图片。为什么你在图像中定义了BitmapImage
和FormatConvertedBitmap
。资源?为什么不能将
放入图像资源。这是ide允许的。这只是一个编译错误。我从http URI字符串加载了一个ImageSource,并将其传递给转换器。我想这没问题。我想知道哪里出了问题。
<Image Width="45" Height="45" x:Name="headPicture" Cursor="Hand" Source="{Binding HeadPicUrl, Converter={StaticResource MyImageConverter}}" >
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="True">
<Setter Property="Source" Value="{StaticResource image1}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="False">
<Setter Property="Source" Value="{StaticResource formattedImage}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>