因此,這裏是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手動執行此程序。
任何人有任何想法?