wpf如何动态改变button的事件.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf如何动态改变button的事件.相关的知识,希望对你有一定的参考价值。

请看下面的代码第5行的button(aaaa)我想在类中取得它然后改变他的按钮文字和click事件,但是却取不到它,第9行的元素能根据name取到,刚研究wpf请高手指点如何做,谢谢。

<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid.Resources>
<DataTemplate x:Key="buttonTemplate">
<StackPanel Orientation="Horizontal">
<Button Name="aaaa" Content="删除" Width="70" Click="Button_Click"/>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" HorizontalAlignment="Stretch" Name="dgData" CellEditEnding="dgData_CellEditEnding" VerticalAlignment="Stretch" >
......
</Grid>

因为button屏蔽了mousedown事件。你可以画一个border。把button放入border。
让button自动适应border的大小。
在border的mousemove事件,总改变鼠标形状。
在border的mousedown事件中保存当前点。
在border的mouseup事件中获取鼠标位置,
通过down和up的位置差,计算你的按钮大小,改变border的大小和位置即可。
参考技术A this.aaaa.Click-=Button_Click;
this.aaaa.Click+=Button_Click1;追问

嗯,谢谢。这个问题用别的方式解决了。现在又出现了一个新问题,
onload事件为什么只执行一次,也就是第一次打开的时候执行了一次,close之后再打开就不执行了。
为了解决这个问题又调用了activated事件,可是这样也有个坏处就是,第一次打开时,即执行了onload也执行了activated,想问一下怎样解决。谢谢。
原来调用close方法并不会清空窗口对象,手动清空一下就行了。

本回答被提问者采纳

wpf里如何动态改变一个按钮模板里边的静态资源

在C#代码里取 矩形的name是取不到的。 只能取到button的值 我现在要在c#里动态改变矩形Fill里的静态资源的值

可以找到模板下面的控件喔,当然也可以修改其属性。给个demo给你
前台:
<Grid>
<Button Name="btn" Width="80" Height="30">
<Button.Resources>
<SolidColorBrush x:Key="redbrush" Color="Red"/>
<SolidColorBrush x:Key="greenbrush" Color="Green"/>
</Button.Resources>
<Button.Template>
<ControlTemplate>
<Rectangle Name="rct" Fill="StaticResource redbrush" />
</ControlTemplate>
</Button.Template>
</Button>
<Button Click="button1_Click" Content="Button" Height="23" HorizontalAlignment="Left" Margin="190,222,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
后台:
private void button1_Click(object sender, RoutedEventArgs e)

Rectangle rec = (Rectangle)btn.Template.FindName("rct", btn);

rec.SetResourceReference(Rectangle.FillProperty, "greenbrush");
参考技术A 。。测试了一下,给Rectangle 加 x:Name属性是可以取到的。。你还是看看代码哪里出问题了吧。。想在代码部分动态改变,必须能取到。。。 参考技术B 在矩形 上面 构成控件 然后 设置Name 属性就可以了

以上是关于wpf如何动态改变button的事件.的主要内容,如果未能解决你的问题,请参考以下文章

在WPF中,如何遍历动态生成的多个button按钮

WPF代码触发Button点击事件

wpf里如何动态改变一个按钮模板里边的静态资源

在C#的wpf中我需要把button做成圆形而且button控件改变颜色的时候可以发出类似光晕的效果

WPF自定义控件,自定义控件中由多个button组成,如何给每个button添加不同事件处理?

winform中如何获取鼠标所点击的控件名称