Member 11272589 Ответов: 1

Оператор равенство == вести отличаться для WPF и UWP


Равенство оператор == не работает в универсальные приложения для Windows

Что я уже пробовал:

Я пытаюсь сравнить два объекта значения как keyvaluepair с помощью оператора равенства . Условие было установлено в WPF и получить ложные в универсальные приложения для Windows.Но, используя равенства() вам правда в WPF и магазина. Отличается ли поведение оператора равенства для платформы WPF и UWP? может ли кто-нибудь предложить вам свои идеи?

public partial class MainWindow : Window
    {
        public List<KeyValuePair<int, double>> Collection { get; set; }
        public MainWindow()
        {           
            InitializeComponent();                      
            Collection = new List<KeyValuePair<int, double>>();
            Collection.Add(new KeyValuePair<int, double>(1, 18));
            Collection.Add(new KeyValuePair<int, double>(2, 36));
            Collection.Add(new KeyValuePair<int, double>(3, 24));
            Collection.Add(new KeyValuePair<int, double>(4, 42));
            Collection.Add(new KeyValuePair<int, double>(5, 30));
            List<object> actualdata = new List<object>();
            for (int c = 0; c < Collection.Count; c++)
            {
                actualdata.Add(Collection[c]);
            }           
            bool flag = false;
            Model modal = new Model();
            modal.Item = actualdata[1];
            object ob = actualdata[1];
            if (modal.Item == ob)
                flag = true;
            else if (ob.Equals(ob))
                flag = true;
            else
                flag = false;

        }
    }
    public class Model : DependencyObject, INotifyPropertyChanged
    {
        public int xval { get; set; }
        public object obj { get; set; }

        public object Item
        {
            get { return (object) GetValue(ItemProperty); }
            set { SetValue(ItemProperty, value); }
        }
        public static readonly DependencyProperty ItemProperty =
            DependencyProperty.Register("Item", typeof(object), typeof(Model), new PropertyMetadata(null, OnPropertyChanged));
        private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            (d as Model).onPropertyChanged("Item");
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void onPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs("Item"));
            }
        }
    }

Это мое требование. несмотря на то , что значения одинаковы, оператор equlity возвращает true в WPF, false в UWP. Вот, у меня по сравнению переменная объектного типа с свойства зависимостей типа object. я запутываюсь, является ли свойство зависимости ссылкой на какую-либо ссылку в UWP?

Garth J Lancaster

возможно, вы захотите отредактировать / обновить свой вопрос и показать какой - то код- таким образом, это может иметь смысл для любого, кто попытается дать ответ

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Поэтому скопируйте и вставьте соответствующий фрагмент кода и скажите нам, в какой именно строке(строках) показана проблема.
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

1 Ответов

Рейтинг:
4

Member 11272589

Всем Привет,

Этот код ниже - мое фактическое требование.

public partial class MainWindow : Window
   {
       public List<KeyValuePair<int, double>> Collection { get; set; }
       public MainWindow()
       {
           InitializeComponent();
           Collection = new List<KeyValuePair<int, double>>();
           Collection.Add(new KeyValuePair<int, double>(1, 18));
           Collection.Add(new KeyValuePair<int, double>(2, 36));
           Collection.Add(new KeyValuePair<int, double>(3, 24));
           Collection.Add(new KeyValuePair<int, double>(4, 42));
           Collection.Add(new KeyValuePair<int, double>(5, 30));
           List<object> actualdata = new List<object>();
           for (int c = 0; c < Collection.Count; c++)
           {
               actualdata.Add(Collection[c]);
           }
           bool flag = false;
           Model modal = new Model();
           modal.Item = actualdata[1];
           object ob = actualdata[1];
           if (modal.Item == ob)
               flag = true;
           else if (ob.Equals(ob))
               flag = true;
           else
               flag = false;

       }
   }
   public class Model : DependencyObject, INotifyPropertyChanged
   {
       public int xval { get; set; }
       public object obj { get; set; }

       public object Item
       {
           get { return (object) GetValue(ItemProperty); }
           set { SetValue(ItemProperty, value); }
       }
       public static readonly DependencyProperty ItemProperty =
           DependencyProperty.Register("Item", typeof(object), typeof(Model), new PropertyMetadata(null, OnPropertyChanged));
       private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
       {
           (d as Model).onPropertyChanged("Item");
       }

       public event PropertyChangedEventHandler PropertyChanged;
       protected virtual void onPropertyChanged(string name)
       {
           PropertyChangedEventHandler handler = PropertyChanged;
           if (handler != null)
           {
               handler(this, new PropertyChangedEventArgs("Item"));
           }
       }
   }




Когда я пытаюсь запустить образец, оператор equal возвращает true в WPF и возвращает false в UWP. Кто-нибудь может поделиться вашими идеями?