Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 附加属性回拨不';无法使用wpf VS2012中的默认值_C#_Wpf_Callback_Visual Studio 2012_Dependency Properties - Fatal编程技术网

C# 附加属性回拨不';无法使用wpf VS2012中的默认值

C# 附加属性回拨不';无法使用wpf VS2012中的默认值,c#,wpf,callback,visual-studio-2012,dependency-properties,C#,Wpf,Callback,Visual Studio 2012,Dependency Properties,我正在尝试为combobox编写一个简单的附加属性,该属性通过回调更改combobox的数据源 我的问题是回调函数对defualt值不起作用,这是我的代码 附属性类 namespace WpfApplication2 { public enum Types { Employee, Position, Task } public class ComboBoxAttached:DependencyObject { public static readonly

我正在尝试为combobox编写一个简单的附加属性,该属性通过回调更改combobox的数据源 我的问题是回调函数对defualt值不起作用,这是我的代码

附属性类

namespace WpfApplication2
{
    public enum Types { Employee, Position, Task }
    public class ComboBoxAttached:DependencyObject
    {
        public static readonly DependencyProperty TypeOfProperty =
            DependencyProperty.RegisterAttached(
                "TypeOf", 
                typeof(Types), 
                typeof(ComboBoxAttached), 
                new PropertyMetadata(Types.Position, OnTypesChanged));  

        public static void SetTypeOf(DependencyObject d, Types use)
        {
            d.SetValue(TypeOfProperty, use);
        }

        private static void OnTypesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ComboBox cb = d as ComboBox;

            // MessageBox.Show(((Types)e.NewValue).ToString());
            switch ((Types) e.NewValue)
            {
                case Types.Employee:
                    cb.ItemsSource = SourceData.Employee;
                    break;
                case Types.Position:
                    cb.ItemsSource = SourceData.Position;
                    break;
                case Types.Task:
                    cb.ItemsSource = SourceData.Task;
                    break;
            }
        }
    }
 }
数据源的类别

namespace WpfApplication2
{
    public static class SourceData
    {
        public static List<string> Employee=new List<string>(){ "Manager","HR","CEO","CFO"};
        public static List<string> Position = new List<string>() { "Right", "Left", "Forward", "Backward" };
        public static List<string> Task = new List<string>() { "Assessment", "Measurement", "Consult", "Other" };  
    }
}
命名空间WpfApplication2
{
公共静态类SourceData
{
public static List Employee=new List(){“经理”、“人力资源”、“首席执行官”、“首席财务官”};
公共静态列表位置=新列表(){“右”、“左”、“前”、“后”};
公共静态列表任务=新列表(){“评估”、“测量”、“咨询”、“其他”};
}
}
xaml


只有当属性发生实际更改时才会调用回调。最初它有它的默认值,根据设计,回调将不会被调用。Sou您需要手动调用它,或者您可以使用类型为
类型的属性?
(使其可为空)手动将默认值设置为
null

public static readonly DependencyProperty TypeOfProperty =
            DependencyProperty.RegisterAttached(
                "TypeOf", 
                typeof(Types?), 
                typeof(ComboBoxAttached), 
                new PropertyMetadata(null, OnTypesChanged)); 

仅当属性实际更改时才会调用回调。最初它有它的默认值,根据设计,回调将不会被调用。Sou您需要手动调用它,或者您可以使用类型为
类型的属性?
(使其可为空)手动将默认值设置为
null

public static readonly DependencyProperty TypeOfProperty =
            DependencyProperty.RegisterAttached(
                "TypeOf", 
                typeof(Types?), 
                typeof(ComboBoxAttached), 
                new PropertyMetadata(null, OnTypesChanged)); 

谢谢,这正好回答了我所看到的问题。这真的是一团糟,WPF团队的一个巨大疏忽……谢谢,这刚刚回答了我所看到的问题。这真是一团糟,WPF团队的一个巨大疏忽。。。