因此,这里是senerio。如何执行System.Windows.Application的外部和实例的DataBinding
我想建立与嵌入式从数据库中的图像上的文本图像库。
我试图通过具有template.xaml文件,并在ClassLibrary项目实例它这样做。因此,xaml文件正在WPF应用程序的范围之外实例化。
我想创建一个PivotCollection有点像在这个环节
http://martimedia.blogspot.com/2010/07/creating-pivot-collection.html
我结束了在我的类库从System.Windows.Application继承得到这个工作解释,但事实远非因为它引发了关于所使用的AppDomain的问题。
我已经knoced了一些简单的示例代码简单地展示一下我想才达到。
下面是一个简单的POCO,我想结合。
public class DataObject {
public DataObject(string value) {
Property = value;
}
public string Property { get; set; }
}
这是我想绑定的一个简单的'图像模板'。
<UserControl x:Class="XamlRenderingExample.Template"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock Text="{Binding Property}"></TextBlock>
</Grid>
</UserControl>
下面是一个简单类库来从XAML创建图像
public class CreateBitmapImagesFromXamlTemplate {
public CreateBitmapImagesFromXamlTemplate() {
Template template = new Template();
foreach (DataObject obj in GetDataObjects())
{
template.DataContext = obj;
RenderXamlAsBitMap(template);
}
}
private void RenderXamlAsBitMap(Template template) {
template.Arrange(new Rect(0, 0, 300, 300));
RenderTargetBitmap bitmap = new RenderTargetBitmap((int)template.RenderSize.Width,
(int)template.RenderSize.Height,
96,
96, PixelFormats.Default);
bitmap.Render(template);
// Save away the bitmap to file.
}
private static List<DataObject> GetDataObjects() {
return new List<DataObject>()
{
new DataObject("Hello"),
new DataObject("Another string")
};
}
}
的问题是,不添加的Xaml到渲染窗口在WPF应用程序设置的datacontext将不执行所期望的绑定,结果是textBlock不会显示来自DataObject的数据。
按我的理解,如果我们是在一个WPF应用程序和模板添加到渲染窗口当我设置模板作业在调度QUED达到实际执行databidning从拉动值在DataContext数据对象到模板。
我想要做的是能在我的类库,而无需实例化对象System.Windows.Application手动执行此程序。
任何人有任何想法?