Доброго времени суток!
Столкнулся с такой проблемой. Разрабатываю свой контрол (требуется возможность загрузки png с прозрачностью). В нем имеется свойство моего типа — AlphaImage. Стандартный Design-Time редактор для изображений использовать нельзя — загрузка png стандартными средствами гробит альфаканал (ну во всяком случае таково было мое исходное предположение

).
За сим написал свой простейший редактор AlphaImageEditor (вызывает диалог открытия файла и загружает изображение):
public class AlphaImageEditor : UITypeEditor
{
private OpenFileDialog openDialog;
public override object EditValue(ITypeDescriptorContext context,
IServiceProvider provider, object value)
{...}
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override bool GetPaintValueSupported(ITypeDescriptorContext context)
{
return true;
}
public override void PaintValue(PaintValueEventArgs e)
{
Graphics graphics = e.Graphics;
AlphaImage img;
if (e.Value != null)
{
img = (AlphaImage)e.Value;
img.Draw(graphics, e.Bounds);
}
graphics.DrawRectangle(Pens.Black, e.Bounds);
}
protected virtual AlphaImage LoadFromStream(Stream stream)
{
return AlphaImage.CreateFromStream(stream);
}
}
Далее прописал этот редактор свойству моего контрола в *.xmta файле:
<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
<Class Name="Transparency.Controls.TransparentPanel">
<DesignTimeVisible>true</DesignTimeVisible>
<Property Name="Image">
<Browsable>true</Browsable>
<Category>Apeerance</Category>
<Editor>
<Type>Transparency.Design.AlphaImageEditor, Transparency.Design</Type>
<BaseType>System.Drawing.Design.UITypeEditor</BaseType>
</Editor>
<EditorBrowsable>Always</EditorBrowsable>
</Property>
</Class>
</Classes>
Далее разместил контрол на форме. В проперти грид свойство Image не появилось
Дальнейшие пляски с бубном подтвердили, что:
1. Свойство не отображается так как для него не найдено подходящего редактора
2. Мой редактор Visual Studio не подцепила
Попытался создать контрол и редактор для его свойства для полного фреймворка — работает без всяких проблем. Очевидно проблема во взаимодействии Compact-сборок и сборок полного фреймворка. Т.е. при разработке контрола для Compact Framework приходится описывать сам контрол в Smart Device сборке, а редактор в Windows Class Library, которая ссылается на сборку для Smart Device.
Вероятно из-за этого дищайнер Visual Studio не может найти редактор.
К сожалению я исчерпал идеи как это можно исправить. Возможно у кого-то они есть?