在创建的Silverlight Control中使用图片
在创建的Silverlight Control中使用图片
在做控件的Template的时,有可能需要用到位图。但是直接把图片放到ControlTemplate中去,在编译运行时会有xamlprase错误。 这是控件没有找到图片资源报的错误。
图片正确的写法应该是这样:
<Image Source="/MyControl;component/nasa.png" />
完整的Template代码如下:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:my="clr-namespace:MyControl;assembly=MyControl"
>
<Style TargetType="my:MyQRCode">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="my:MyQRCode">
<Grid x:Name="Root">
<Image Source="/MyControl;component/nasa.png" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</ResourceDictionary>
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:my="clr-namespace:MyControl;assembly=MyControl"
>
<Style TargetType="my:MyQRCode">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="my:MyQRCode">
<Grid x:Name="Root">
<Image Source="/MyControl;component/nasa.png" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</ResourceDictionary>
控件代码:
public class MyQRCode : Control
{
public MyQRCode() : base() {
DefaultStyleKey = typeof(MyQRCode);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
}
}
{
public MyQRCode() : base() {
DefaultStyleKey = typeof(MyQRCode);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
}
}
代码下载:https://files.cnblogs.com/nasa/SilverlightControlIncludeImage.zip