gpt4 book ai didi

c# - [DataMember] 如何与 Image 一起使用?

转载 作者:行者123 更新时间:2023-11-30 18:40:13 28 4
gpt4 key购买 nike

我在 WCF 服务中有以下代码:

[DataContract]
[KnownType(typeof(Bitmap))]
[KnownType(typeof(Image))]
public class CompositeType {
Image FImg = null;
public Image Picture {
get {
return FImg;
}
set {
FImg = value;
}
}

如果我将 [DataMember] 添加到公共(public)图像,则服务引用会在另一个解决方案中被破坏。

[DataMember]
public Image Picture{
get {
return FImg;
}
set {
FImg = value;
}
}

我的问题是如何同时使用 [DataMember] 和 Image?我知道我可以使用字节数组,目前正在这样做,然后在调用我的服务的客户端中对其进行格式化/转换,但我宁愿绑定(bind)到图像,而不必转换字节数组。

最佳答案

我发现在客户端(调用我的 WCF 服务的 Silverlight 应用程序)使用 AutoGeneratingColumn 事件句柄也有效。不一定是我的问题的答案,但我认为了解它很有用。我会添加为评论,但代码太长了。

private void dgResults_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) {
if (e.PropertyType == typeof(byte[])) {
e.Column.Header = e.Column.Header + "_D";
// Create a new template column.
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.Header = e.Column.Header + "_E";
templateColumn.CellTemplate = (DataTemplate)Resources["imgTemplate"];
templateColumn.CellEditingTemplate = (DataTemplate)Resources["imgTemplate"];
// ...
// Replace the auto-generated column with the templateColumn.
e.Column = templateColumn;

}
}

资源 ["imgTemplate"] 在 Silverlight 的 .XAML 文件中创建,此代码位于其代码隐藏中。

<UserControl.Resources>
<local:BinaryArrayToURIConverter x:Key="binaryArrayToURIConverter" />
<DataTemplate x:Key="imgTemplate">
<Image x:Name="img" Source="{Binding GraphicBytes,Converter={StaticResource binaryArrayToURIConverter}}"/>
</DataTemplate>
</UserControl.Resources>

局部:是指主要XAML声明的一部分:

xmlns:local="clr-namespace:<your namespace here>"

BinaryArrayToURIConverter 的代码:

public class BinaryArrayToURIConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
MemoryStream ms = new MemoryStream((byte[])value);
BitmapImage image = new BitmapImage();
image.SetSource(ms);
return image;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}

关于c# - [DataMember] 如何与 Image 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8660663/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com