首先,想问大家一个问题,你们如果要给一个Button添加背景图片会怎么做?(呵呵,这个问题又点小白哈)

是这样吗?

        <Button  Height="57" HorizontalAlignment="Left" Margin="106,86,0,0" Name="button1" 
VerticalAlignment="Top" Width="147" BorderThickness="0">
<Button.Background>
<ImageBrush ImageSource="/WpfProgressBarDemo;component/Images/btn_13.png" />
</Button.Background>
</Button>

如果也是这样的话,那你们有没有碰到这个问题呢,当鼠标放到按钮上,背景会被改变呢?如图:

正常显示

鼠标放到按钮上

按钮就变成这样了,你们有没有碰到这样的事情?那你们又是怎么解决的呢,希望高手指点下。不胜感激……

我们的解决方案是做一个模板,把背景图片当作内容赋给Button代码如下:

             <Button  Name="btnSure" Click="btnSure_Click" Margin="10"   >
<Button.Template>
<ControlTemplate x:Name="ctSure">
<ContentControl>
<Image Source="/Oland.HSS.InHospital;component/Pictures/maintenance/1.png"></Image>
</ContentControl>
</ControlTemplate>
</Button.Template>
</Button>

这样就可以解决了刚才的那个问题,你们有好的建议吗?

下面又出现新的问题了,我想根据业务需要从后台改变按钮背景怎么办?呵呵,标题中的中的问题来(怎样修改模板中的控件):

其实也简单,就直接上代码了:

  private void Window_Loaded(object sender, RoutedEventArgs e)
{
if (!IsInMaintenance)
{
ControlTemplate template = btnSure.FindName("ctSure") as ControlTemplate; if (template != null)
{
Image img = template.FindName("imgWork", btnSure) as Image;
img.Source = new BitmapImage(new Uri(@"../Pictures/maintenance/3.png",
UriKind.Relative));
}
}
}

如果你把模板放在Resource里面你可以这样写

ControlTemplate template = (ControlTemplate)this.TryFindResource("模板名称");

呵呵,很简单吧?其实我还有另外一个问题,也同样想征求大家的建议?我写了触发器,就是鼠标放上去会改变背景,直接鼠标操作没问题,但是在触屏上就需要点击两次才能执行不知道是什么状况,把触发器去了就没事了……希望大神点意见……

WPF备忘录(5)怎样修改模板中的控件的更多相关文章

  1. WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问

    原文:WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问 1,在菜单中访问 弹出菜单的控件 var mi = sender as MenuItem;//菜单条目 MenuItem ...

  2. UWP 查找模板中的控件

    这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...

  3. Android 在Fragment中修改Activity中的控件

    在当前的Fragment中调用getActivity方法获取依附着的那个Activity,然后再用获取到的Activity去findViewById拿到你需要的控件对其操作就行了.

  4. WPF之通过EventTrigger修改模板中元素的属性

    前言:对于此操作,我只想说是微软的神经,还是我的笨蛋.为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认 ...

  5. WPF 获取控件模板中的控件

    DG是控件名称public T GetVisualChild<T>(DependencyObject parent, Func<T, bool> predicate) wher ...

  6. WPF日积月累之DataGrid样式以及操作数据模板中的控件

    一.效果图 二.代码预览 1 <Window x:Class="Test.MainWindow" 2 xmlns="http://schemas.microsoft ...

  7. 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl

    [程序代码] <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> ...

  8. 委托 在其他类中修改form中的控件属性

    通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 Form1.cs using System; ; i < ; i++) {                 cb ...

  9. IOS 加载Xib 后 如何 动态修改xib中的控件frame

    看看xib里view是不是设置了自动布局 use auto layout.取消掉就可以了.

随机推荐

  1. 数据单位bit byte kb Mb Gb

    8 bit = 1 byte 2^10 bytes = 1 kb 2^10 kb = 1 Mb 2^10 Mb = 1Gb 2^32 bit = 2^2 * 2^10 * 2^10 * 2^10 bi ...

  2. petapoco 新手上路

    PetaPoco是一个轻量级ORM框架 用法可参考http://www.toptensoftware.com/petapoco/  https://github.com/CollaboratingPl ...

  3. Canvas教程

    一.Canvas基本用法 canvas对应中文是“画布”,<canvas>是HTML5的新元素,IE9+支持 canvas元素的默认大小是300px * 150px,最简单的代码将生成一个 ...

  4. 【推荐】介绍两款Windows资源管理器,Q-Dir 与 FreeCommander XE(比TotalCommander更易用的免费资源管理器)

    你是否也像我一样,随着硬盘.文件数量的增加,而感到对于文件的管理越来越乏力. 于是我试用了传说中的各种软件,包括各种Explorer外壳,或者第三方资源管理器. 最后我确定下来经常使用,并推荐给您的是 ...

  5. CefSharp访问需要认证网页或接口(在Request的Headers中添加认证Token)

    public class MyRequestHandler : DefaultRequestHandler { public static readonly string VersionNumberS ...

  6. WPF Bitmap转成Imagesource的性能优化

    之前有个需求是在WPF中生成二维码,用的是QRCoder. QRCoder生成的是Bitmap,在wpf中需要转换成ImageSource才能显示. 之前的转换方式是: IntPtr hBitmap ...

  7. bower 安装后 jade 引用404问题

    这个问题困扰我接近2小时,这是我在stackoveflow 上面挖到的 原文地址:http://stackoverflow.com/questions/21821773/configure-node- ...

  8. 动态产生select option列表

    在很久之前,Insus.NET刚学习前端时,有写过<动态创建一些常的html标签>http://www.cnblogs.com/insus/p/3741665.html 但其中没有实现动态 ...

  9. 【转】C# Enum,Int,String的互相转换 枚举转换

    Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...

  10. API网关【gateway 】- 2

    最近在公司进行API网关重写,公司内采用serverMesh进行服务注册,调用,这里结合之前学习对API网关服务进行简单的总结与分析. 由于采用了大量的nginx相关的东西,所以在此记录一下: 配置连 ...