找回密码
 立即注册

QQ登录

只需一步,快速开始

xinren063

高级会员

46

主题

209

帖子

1378

积分

高级会员

积分
1378

活字格认证

xinren063
高级会员   /  发表于:2013-10-24 09:41  /   查看:9815  /  回复:10
WPF PropertyGrid 中自定义控件不响应ValueChanged事件。
以下是部分自定义控件:
public class MyZsmTextBoxEditor : Grid, ITypeEditorControl
    {
        public ITypeEditorControl Create()
        {
            MyZsmTextBoxEditor s = new MyZsmTextBoxEditor();
            s.HorizontalAlignment = HorizontalAlignment.Stretch;
            s.VerticalAlignment = VerticalAlignment.Stretch;
            s.Height = 20;
            ColumnDefinition c1 = new ColumnDefinition();
            ColumnDefinition c2 = new ColumnDefinition();
            c2.Width = new System.Windows.GridLength(17);
            s.ColumnDefinitions.Add(c1);
            s.ColumnDefinitions.Add(c2);
            TextBox t = new TextBox();
            t.HorizontalAlignment = HorizontalAlignment.Stretch;
            t.VerticalAlignment = VerticalAlignment.Stretch;
            t.TextWrapping = TextWrapping.NoWrap;
            t.BorderThickness = new System.Windows.Thickness(0);
            Grid.SetColumn(t, 0);
            s.Children.Add(t);

            C1.WPF.Toolbar.C1ToolbarButton b = new C1.WPF.Toolbar.C1ToolbarButton();
            b.HorizontalAlignment = HorizontalAlignment.Stretch;
            b.VerticalAlignment = VerticalAlignment.Stretch;
            b.BorderThickness = new System.Windows.Thickness(0);
            b.BorderBrush = System.Windows.Media.Brushes.Transparent;
            b.Background = System.Windows.Media.Brushes.Transparent;
            b.Content = "...";
            b.HorizontalContentAlignment = HorizontalAlignment.Center;
            b.VerticalContentAlignment = VerticalAlignment.Top;
            b.Width = 15;
            Grid.SetColumn(b, 1);
            b.Click += new RoutedEventHandler((u, e) =>
            {
                Zsm zsm = new Zsm();
                zsm.Text = t.Text;
                if (true == zsm.ShowDialog())
                {
                    t.Text = zsm.Text;
                    t.Focus();
                }
            });
            s.Children.Add(b);
            return s;
        }

        public bool Supports(PropertyAttribute Property)
        {
            return true;
        }

        public void Attach(PropertyAttribute property)
        {
            var binding = new System.Windows.Data.Binding(property.PropertyInfo.Name)
            {
                Mode = BindingMode.TwoWay,
                Source = property.SelectedObject,
                ValidatesOnExceptions = true
            };
            ((TextBox)this.Children[0]).SetBinding(TextBox.TextProperty, binding);
        }

        public void Detach(PropertyAttribute property)
        {
        }

        public event System.ComponentModel.PropertyChangedEventHandler ValueChanged;
    }

可以给个相似的DEMO吗?

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-10-24 12:07:00
沙发
回复 1楼xinren063的帖子

xinren063 你好,

不好意思,目前我这边也没有自定义事件的 Demo 提供给你,可以去网络中搜索相关资源学习下。
搜索到一篇文章也许对你有帮助:
http://www.silverlightchina.net/ ... 011/1221/12734.html
回复 使用道具 举报
xinren063
高级会员   /  发表于:2013-10-24 12:38:00
板凳
我没有自定义事件,而是自定义控件,只是这个控件无法响应ValueChanged事件
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-24 15:36:00
地板
回复 3楼xinren063的帖子

xinren063 你好,
1# 中的代码只是定义了一个事件名称,但是在内部并没有触发这个事件,所以接收不到,推荐参考 MSDN 中的一个例子:http://msdn.microsoft.com/zh-cn/library/dd833067(v=vs.95).aspx
回复 使用道具 举报
xinren063
高级会员   /  发表于:2013-10-24 15:47:00
5#
那PropertyGrid 中自定义控件有可以参考的DEMO吗?是不是用其他方法实现需要功能的。
回复 使用道具 举报
xinren063
高级会员   /  发表于:2013-10-24 16:42:00
6#
再问个问题,PropertyGrid里有没有可以记录曾经输入过的值的控件,之后以下拉来选择。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-24 20:13:00
7#
回复 6楼xinren063的帖子

你好,
请问你指得是记录每次输入的值,填入下拉选项中。之后可以通过下拉框选择吗?
当前还没有提供这种功能。
回复 使用道具 举报
xinren063
高级会员   /  发表于:2013-10-25 08:10:00
8#
那请回答一下5#的问题,补充问一下PropertyGrid的自带的控件是如何实现的,希望可以参考一下。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-25 10:08:00
9#
回复 8楼xinren063的帖子

xinren063 你好,
提供两个 WPF 平台 PropertyGrid  实现自定义控件的 Demo:




主要思路是通过实现ITypeEditorControl接口,来实现自定义控件的添加。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
xinren063
高级会员   /  发表于:2013-10-29 17:06:00
10#
谢谢你的DEMO,参考DEMO试试可不可以实现,好多重载没见过,谢谢。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部