wpf 怎么更改页面上控件的背景色啊,都已经绘制上去了,怎么办呢?
1个回答
展开全部
最近看到你问题不少,看得出在积极学习,但懒得回答,因为问题却描述不清,也不贴代码。
所有问题的答案,在网络上都可以找到。
这个问题如果处理?依据自己的开发经验提供一些实现方法。
1、控件模板的定义
假定你的控件模板如下定义
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" Background="{TemplateBinding Background}"
<ContentPresenter x:Name="contentPresenter" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="Green"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
这里是一个Button的Template,这里有个Border就是描述按钮的显示区域,你说的控件背景通过Border的Background可以实现。
1、可以直接设定不变值,比如:Backgorund="Gray";
2、通过TemplateBinding绑定到Background上,这个Background可以看做控件全局变量,Button在Xaml中使用时赋予值,如下Button用到上述Template:
<Button x:Name="idBtnTest" Background="Blue" >
<Button.Template>
<!--上述Template-->
</Button.Template>
</Button>
Button的Background因为在Template中绑定到了Border上,Border的背景色也是Blue。
只要在代码中通过idBtnTest.Background = Brushs.Red;这样的方式就可以动态修改Button的背景色。
3、通过Trigger修改背景色,具体用法看上例(也可以通过VisualStateManager)。
4、可以通过DataTrigger,具体自己搜索关键字学习。
根据问题,做个小总结,并不全面,希望对此问有所帮助。
所有问题的答案,在网络上都可以找到。
这个问题如果处理?依据自己的开发经验提供一些实现方法。
1、控件模板的定义
假定你的控件模板如下定义
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" Background="{TemplateBinding Background}"
<ContentPresenter x:Name="contentPresenter" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="Green"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
这里是一个Button的Template,这里有个Border就是描述按钮的显示区域,你说的控件背景通过Border的Background可以实现。
1、可以直接设定不变值,比如:Backgorund="Gray";
2、通过TemplateBinding绑定到Background上,这个Background可以看做控件全局变量,Button在Xaml中使用时赋予值,如下Button用到上述Template:
<Button x:Name="idBtnTest" Background="Blue" >
<Button.Template>
<!--上述Template-->
</Button.Template>
</Button>
Button的Background因为在Template中绑定到了Border上,Border的背景色也是Blue。
只要在代码中通过idBtnTest.Background = Brushs.Red;这样的方式就可以动态修改Button的背景色。
3、通过Trigger修改背景色,具体用法看上例(也可以通过VisualStateManager)。
4、可以通过DataTrigger,具体自己搜索关键字学习。
根据问题,做个小总结,并不全面,希望对此问有所帮助。
更多追问追答
追答
模板中Border的Background设置为"{TemplateBinding Background}"
在按钮事件中通过控件的x:Name,myControl.Background = Brushes.Gray;就可以达到效果!
一般控件模板布局发生改变,才回考虑重置模板。
最好把代码贴出来,才能基于现在的设计提供修改意见。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询