我有两个项目,主要项目是窗口,另一个是ResourceLibrary。在Resourcelibrary里面我有一个名为logo的controltemplate。我想访问controltemplate并将其设置为主窗口中的图像。 controltemplate中的xaml标记是从图像导出到创建图像的路径。我怎么能这样做,我在app.xaml中引用资源路径,但仍然没有显示。有人知道一个可能证明这个的例子吗?
在MainWindow
<Image Grid.Row="2" Grid.Column="2" DataContext="{DynamicResource ResourceKey=Logo}" />
在ResourceLibrary中
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:ResourceLibrary">
<ControlTemplate x:Key="Logo">
path stuff
</ControlTemplate>
</ResourceDictionary
在App.xaml
中<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourceLibrary;component/User Controls/Logo.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
固定 我使用了画布背景并将资源设置为使用可视化画笔,这很有用。
答案 0 :(得分:0)
以下代码未经过测试和测试...仅供您参考...
我不明白为什么你需要一个ControlTemplate。将该路径本身作为资源字典中的资源公开。
<Path x:Key="MyImagePath"
Fill="..."
Stretch="..."
Stroke="..."
StrokeThickness="..."
Data="...">
...
</Path>
然后使用转换器将此路径作为ImageSource托管。
<Image Source="{Binding Source={StaticResource MyImagePath},
BindsDirectlyToSource=True,
Converter={StaticResource PathToImageConverter}}" />
使用此逻辑在PathToImageConverter类中将几何路径绘制到图像中.....
public object Convert(
object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
Path MyPath = value as Path;
var dGroup = new DrawingGroup();
using (DrawingContext dc = dGroup.Open())
{
dc.DrawGeometry(
MyPath.Fill,
new Pen(MyPath.Stroke, MyPath.StrokeThickness),
MyPath.Data);
}
return new DrawingImage(dGroup);
}
如果有帮助,请告诉我。