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.取消掉就可以了.
随机推荐
- applicationContext.xml 基本配置
<!-- 头文件,主要注意一下编码 --><?xml version="1.0" encoding="UTF-8"?><beans ...
- C#调用接口注意要点
在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存cookie值,再进行其他接 ...
- urllib2 的get请求与post请求
urllib2默认只支持HTTP/HTTPS的GET和POST方法 urllib.urlencode() urllib和urllib2都是接受URL请求的相关参数,但是提供了不同的功能.两个最显著的不 ...
- BZOJ NOIP提高组十连测第一场
今天的题目一共拿了$180$分,感觉自己还是太菜了,二三两题只能骗到部分分 1.$String\ Master$ 题目大意:有两个字符串,在允许k次失配的情况下,求最长公共子串的长度 没什么好讲,直接 ...
- github或码云协同开发
协同开发 1.引子:假如三个人共同开发同一份代码,每个人都各自安排了任务,当每个人都完成了一半的时候,提交不提交呢? 要提交,提交到dev吗,都上传了一半,这样回家拿出来的代码根本跑不起来.所以, 为 ...
- Ubutntu安装docker启动报Removed /etc/systemd/system/docker.service.
Ubutntu安装docker启动报Removed /etc/systemd/system/docker.service.的错误,只需要执行以下三条命令. systemctl unmask docke ...
- odoo 开发基础 -- 视图之widget
Odoo 中的widget many2many_tags one2many_list selection progressbar selection statusbar handle monetary ...
- 解决SecureCRT/Xshell无法以root用户连接Ubuntu
首先执行命令ps -e | grep ssh .查看是否有ssh进程运行. 确认没有ssh运行,且系统未安装openssh. 然后在系统终端界面内输入apt-get update命令. (确保系统 ...
- npm 安装 cannot find module
window7安装module出现 Connot find module 'xxx' 解决办法: 添加环境变量命名为:NODE_PATH 设置值为:%AppData%\npm\node_modules ...
- 关于Android系统的启动流程
当按下Android设备电源键时究竟发生了什么?Android的启动过程是怎么样的?什么是Linux内核?桌面系统linux内核与Android系统linux内核有什么区别?什么是引导装载程序?什么是 ...