WPF 早APP.xaml中的style中的按钮事件怎么写
为了能再自定义控件用使用,我把选项卡的样式写在APP.xaml中,由此出现的问题是在模板中的按钮事件不好写了……贴代码字数超了……大家意会一下吧图上1是网上看的要写com...
为了能再自定义控件用使用,我把选项卡的样式写在APP.xaml中,由此出现的问题是在模板中的按钮事件不好写了……
贴代码字数超了……大家意会一下吧
图上 1是网上看的要写command 没看明白 也没成功,2是默认的方法 EventSetter 不过 运行报错了
这个style的目的是让Tab控件有个关闭按钮,现在要实现这个按钮的事件,如图
貌似只有通过Command来绑定了 但是 我不会 展开
贴代码字数超了……大家意会一下吧
图上 1是网上看的要写command 没看明白 也没成功,2是默认的方法 EventSetter 不过 运行报错了
这个style的目的是让Tab控件有个关闭按钮,现在要实现这个按钮的事件,如图
貌似只有通过Command来绑定了 但是 我不会 展开
3个回答
展开全部
可以写在外面的自己创建的类里面啊
自己写一个委托 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
class DelegateCommand : ICommand
{
public bool CanExecute(object parameter)
{
if (this.CanExecuteFunc == null)
{
return true;
}
return this.CanExecuteFunc(parameter);
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
if (this.ExecuteAction == null)
{
return;
}
this.ExecuteAction(parameter);
}
/// <summary>
/// 委托方法的实现
/// </summary>
public Action<object> ExecuteAction { get; set; }
public Func<object, bool> CanExecuteFunc { get; set; }
public DelegateCommand AddCommand { get; set; } ///定义委托
private void FuncName(object parameter) ///委托要执行的方法
{
//具体要做什么的代码。
}
public DelegateCommand()
{
this.AddCommand = new DelegateCommand();
this.AddCommand.ExecuteAction = new Action<object>(this.Add);
}
}
最后只需要在你的xaml的cs代码中添加:
this.DataContext = new DelegateCommand();
这样就可以在你的前台的command处绑定AddCommand了啊
希望对你有用!!!
自己写一个委托 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
class DelegateCommand : ICommand
{
public bool CanExecute(object parameter)
{
if (this.CanExecuteFunc == null)
{
return true;
}
return this.CanExecuteFunc(parameter);
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
if (this.ExecuteAction == null)
{
return;
}
this.ExecuteAction(parameter);
}
/// <summary>
/// 委托方法的实现
/// </summary>
public Action<object> ExecuteAction { get; set; }
public Func<object, bool> CanExecuteFunc { get; set; }
public DelegateCommand AddCommand { get; set; } ///定义委托
private void FuncName(object parameter) ///委托要执行的方法
{
//具体要做什么的代码。
}
public DelegateCommand()
{
this.AddCommand = new DelegateCommand();
this.AddCommand.ExecuteAction = new Action<object>(this.Add);
}
}
最后只需要在你的xaml的cs代码中添加:
this.DataContext = new DelegateCommand();
这样就可以在你的前台的command处绑定AddCommand了啊
希望对你有用!!!
追问
this.AddCommand.ExecuteAction = new Action(this.Add);
是什么意思 this下面有ADD吗?
追答
哦 这里的add()方法指的就是代码中的FuncName()的那个方法 ,add只是一个例子而已
展开全部
command 是MVVM模式下用来做前台显示和后台逻辑分离的东东。在vm层编写逻辑,在view层通过绑定,传参数(cmmandParameter)给vm层来完成逻辑实现。
这里,需要更正的一个问题是,UserControl的样式应该是写在UserControl的Resource里的,而不是写在app里的 。
改变Template里的控件属性,一般用Triggers就可以实现。EventTrigger你可以在网上查阅下资料,看下如何使用。
这里,需要更正的一个问题是,UserControl的样式应该是写在UserControl的Resource里的,而不是写在app里的 。
改变Template里的控件属性,一般用Triggers就可以实现。EventTrigger你可以在网上查阅下资料,看下如何使用。
更多追问追答
追问
追答
那我可以跟你说trigger肯定行,你只是不会用。Command只会出现在MVVM模式下,不一定要用的。我写的技术博客里有篇关于TabControl的改造的,你可以看下。应该可以解决你的问题。
http://blog.sina.com.cn/s/blog_7f83849b01015hdg.html
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
初看你的代码不是很明白,只有截图也不便于大家调试,是否可以把代码发到你的百度空间,附带详细说明你的需求?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询