WPF备忘录(5)怎样修改模板中的控件
首先,想问大家一个问题,你们如果要给一个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)怎样修改模板中的控件的更多相关文章
- WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问
原文:WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问 1,在菜单中访问 弹出菜单的控件 var mi = sender as MenuItem;//菜单条目 MenuItem ...
- UWP 查找模板中的控件
这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...
- Android 在Fragment中修改Activity中的控件
在当前的Fragment中调用getActivity方法获取依附着的那个Activity,然后再用获取到的Activity去findViewById拿到你需要的控件对其操作就行了.
- WPF之通过EventTrigger修改模板中元素的属性
前言:对于此操作,我只想说是微软的神经,还是我的笨蛋.为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认 ...
- WPF 获取控件模板中的控件
DG是控件名称public T GetVisualChild<T>(DependencyObject parent, Func<T, bool> predicate) wher ...
- WPF日积月累之DataGrid样式以及操作数据模板中的控件
一.效果图 二.代码预览 1 <Window x:Class="Test.MainWindow" 2 xmlns="http://schemas.microsoft ...
- 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl
[程序代码] <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> ...
- 委托 在其他类中修改form中的控件属性
通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 Form1.cs using System; ; i < ; i++) { cb ...
- IOS 加载Xib 后 如何 动态修改xib中的控件frame
看看xib里view是不是设置了自动布局 use auto layout.取消掉就可以了.
随机推荐
- iOS4.0及以上系统,关闭程序,applicationWillTerminate为调用问题解决
iOS4.0以后系统支持多任务类型,程序按下home键后,程序进入后台运行,如果内存不足被系统关闭或者手动关闭,都不会调用applicationWillTerminate回调函数. 解决方法:可以在程 ...
- Windows核心编程:第14章 探索虚拟内存
Github https://github.com/gongluck/Windows-Core-Program.git //第14章 探索虚拟内存.cpp: 定义应用程序的入口点. // #inclu ...
- websevice动态控制访问ip
一般而言webservice是部署在哪台服务器,然后它的address location就是指向哪个,但是由于有些情况处于各种原因,如网络策略,需要先访问某个ip之后再进行跳转到一个ip,这个时候就需 ...
- ServiceStack DateTime数据类型转Json出现的困扰
执行dotnet-new selfhost sstest 创建项目,然后打开解决方案 修改ssTest.ServiceModel中的Hello.cs,在HellopResponse中添加时间属性,然后 ...
- ASP.Net MVC OA项目笔记<五>
1.1.1 抽象工厂封装数据操作类实例创建,然后DBSession调用抽象工厂,修改DBSession CZBK.ItcastOA.DALFactory数据会话层调数据层不能直接new,要封装一下解 ...
- C#开发邮件收发(同步)
发邮件界面: 收邮件界面: 先分析邮件发送类 邮件发送类使用smtp协议,这里以QQ邮箱为例 using System; using System.Collections.Generic; using ...
- OSLab文件描述符
日期:2019/3/24 内容:Linux文件描述符. 一.基本概念 文件描述符(File Descriptor) 一个非负整数.应用程序利用文件描述符来访问文件.打开现存文件或新建文件时,内 ...
- nginx-2.nginx是什么
Nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器: Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以 ...
- 学习使用Apollo配置中心
Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端. Apollo官网地址 如何安装服务端可以按照上面官网的步骤. 这里 ...
- 【ElasticSearch】:elasticsearch.yml配置
ElasticSearch5的elasticsearch.yml配置 注意 elasticsearch.yml中的配置,冒号和后面配置值之间有空格 cluster.name: my-applicati ...