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("模板名称");

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SHERlocked93的前端小站

Vue项目预渲染机制引入实践

周末想顺便把已经做好静态页面的webApp项目做一下SEO优化,由于不想写蹩脚的SSR代码,所以准备采用预渲染,本来想着网上有这么多预渲染的文章,随便找个来跟着...

4532
来自专栏前端人人

React第三方组件3(状态管理之Flux的使用⑤异步操作)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件3(状态管理之Flux的使用①简单...

3334
来自专栏phodal

React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器

昨天下午休息的时候,发现我工作用的 Mac Mini 在疯狂地散热中,打开 Activity Manger 发现是 Chrome 浏览器导致的,再打开 Chro...

19410
来自专栏小狼的世界

Vimperator的有用操作

可以有一个变通的办法复制,先按下"Ctrl+V",然后再用快捷键复制,接下来Vim的快捷键又起作用了。现在还有一个困惑的地方是不用鼠标,如何选中网页中自己希望的...

823
来自专栏Golang语言社区

golang实现简单的udp协议服务端与客户端示例

其实udp没有什么服务端和客户端的概念了,只是一个发一个收而已,只是这样较方便能识别和理解. 服务端: package main import ( "...

3428
来自专栏谦谦君子修罗刀

RN项目第一节

一、项目说明 本项目为模仿美团的项目,采用的是网上提供的API接口。导航采用 公司推荐的react-navigation,滚动条采用第三方组件react-na...

3476
来自专栏前端杂货铺

文本框的属性监测

之前很简单的认为对input的value监测就用2个事件可以搞定兼容性,知道我看了司徒正美的这篇博客,还是感慨自己不够深入,接触的太少。   对于IE全系列,可...

3146
来自专栏编程微刊

微信小程序从零开始开发步骤(五)轮播图

3143
来自专栏韦弦的偶尔分享

微信小程序导航参数中含有问号

和三一样,还可以使用 encodeURIComponent 和 decodeURIComponent 这就是小程序中导航的参数含有?的解决方案,如果还有其他好...

4702
来自专栏程序小工

【VSCode插件】background添加编辑器背景

VScode 编辑器对中文支持很好,插件丰富,主题也好看,所以目前已经由 sublime 转投 Vscode 了。在插件搜集中找到了可以自定义编辑器背景的插件b...

2153

扫码关注云+社区