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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索鼠标
, 问题
, 求大神指点 急急急
, 模板
, 不胜感激!
, 大位大神可以指点一下
, template
, 求大神指点
, 小白求大神指点
, controltemplate
一个
,以便于您获取更多的相关知识。

时间: 2024-09-15 20:38:38

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

WPF备忘录(5)怎样修改模板中的控件

     首先,想问大家一个问题,你们如果要给一个Button添加背景图片会怎么做?(呵呵,这个问题又点小白哈) 是这样吗? <Button Height="57" HorizontalAlignment="Left" Margin="106,86,0,0" Name="button1" VerticalAlignment="Top" Width="147" BorderThick

WPF学习备忘(3) Datagrid中的数据处理

如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter 一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,WPF中的DataGrid 不同于Windows Forms中 的 DataGridView. 在DataGrid的Items集合中,DataGridRow是一个Item,但是,它里面的单元格

获取treeview HierarchicalDataTemplate模板中的控件对象

问题描述 我想获取HierarchicalDataTemplate模板中的控件对象,如下name="image2"的Image对象<TreeViewName="personTree"Width="299"TreeViewItem.Selected="treeView1_Selected"TreeViewItem.Unselected="treeView1_UnSelected"Height="

怎么在后台代码中访问ListView中&amp;amp;lt;EditItemTemplate&amp;amp;gt;模板中的控件?

问题描述 怎么在后台代码中访问ListView中<EditItemTemplate>模板中的控件?今天研究了很长时间,现在我可以通过以下后台代码访问<InsertItemTemplate>模板中控件:protectedvoidDropDownList1_SelectedIndexChanged(objectsender,EventArgse){DropDownListb=(DropDownList)ListView1.InsertItem.FindControl("Dro

关于在GuidView行模板中Button控件的OnClientClick函数,绑定参数的问题!

问题描述 各位大虾:现在在guidview的行模板里面有个button,针对button有OnClientClick和OnClick两个函数,希望先执行OnClientClick进行判断,返回true的情况下再执行OnClick遇到的问题是:OnClientClick的javascript函数有个参数是通过数据库邦定的我写的是:OnClientClick='returnCheckDelete("<%#Eval("DownloadID").ToString()%>&

WPF学习备忘(4) 用WPF打个勾画个叉

<Path Grid.Column="2" Data="M43,5 L20,40 20,40 0,20 6,15 18,26 37,7 43,5 z" Fill="Green" Margin="5" Stretch="Fill" HorizontalAlignment="Right"/> <Path Margin="5" Data="M50

WPF学习备忘(2)WPF获取和设置鼠标位置与progressbar的使用方法

一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition (e.Source as FrameworkElement); Point p = (e.Source as FrameworkElement).PointToScreen(pp); 方法二: API方法 /// <summary> /// 设置鼠标的坐标 /// </summary> /// <param name="x">横坐标</

WPF学习备忘(1) 用WPF画个笑脸

1.画个笑脸给大家娱乐一下: <Canvas Width="200" Height="180" VerticalAlignment="Center" Margin="772,577,466,390"> <Ellipse Canvas.Left="10" Canvas.Top="10" Width="160" Height="160"

WPF 获取控件模板中的控件

问题描述 <toolkit:DataGridTemplateColumnWidth="35"><toolkit:DataGridTemplateColumn.HeaderTemplate><DataTemplate><CheckBoxName="cbbSelALL"Click="cbbSelALL_Click"/></DataTemplate></toolkit:DataGridT