2016-09-09 5 views
1

Проблемы:привязка данных Значения свойства «мерцает»

Когда я изменить значение «LuxVoltage» в графическом интерфейсе с помощью ползунка или NumericUpDown Значения jumpes из «значения по умолчанию» (в этом случае 0) до «фактическое значение». Предполагая, что я установил значение 1000 и распечатать каждый набор это то, что результат выглядит (это своего рода «мерцает»):

Выход:

0 
1000 
0 
1000 
[repeat] 

XAML: (Использование MahApps.Metro "NumericUpDown")

<metro:NumericUpDown 
    Value="{Binding LuxVoltage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
    Minimum="0" 
    Maximum="65535" 
    /> 
<Slider 
    Value="{Binding LuxVoltage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
    Minimum="0" 
    Maximum="65535" 
    /> 

C# (Используя Призмы "BindableBase")

private ushort _luxVoltage = 0; 
public ushort LuxVoltage 
{ 
    get { return _luxVoltage; } 
    set { SetProperty(ref _luxVoltage, value); } 
} 

Требования:

Мне нужно манипулировать одинаковое значение из двух элементов управления. «slieder» просто изменить значение быстро, и «NumericUpDown» Тх прецизионному

+0

Удалил бы UpdateSourceTrigger на слайдере? –

+0

нет, я попробовал. даже удаление его на обоих элементах управления не решает проблему. – Josu

ответ

0

похоже, что фактическая проблема живет где-то еще в моей кодовой базе.

- Связывание с 2 элементов управления одним имуществом должно просто отлично работать.

- Или рассмотрит связывание одного из элементов управления на значение других, величина которого привязано к собственности *

0

Я не знаю, почему у вас есть проблемы с мерцанием, но когда у меня было два GUI вещи прикованы от одного значения в прошлом я всегда обращался к подходу (используя ваш случай) привязки NumericUpDown к свойству в вашей модели viewmodel, а затем привязывая ползунок к свойству NumericUpDown. Это может сработать для вас.

0

Тип значения ползунка двойной. Поскольку вы привязываетесь к ushort, это вызывает несколько обновлений, даже если ползунок не перемещается. Что может привести к дополнительным изменениям, произведенным из другого элемента управления, попробуйте добавить его к привязке Slider, поэтому при перетаскивании ползунка он будет увеличивать его только на частоту тика, которая по умолчанию равна «1.0».

IsSnapToTickEnabled="True" 
0

Попробуйте проверить поступающее значение на инкубаторе для значимых изменений перед вами вызовите SetProperty.

private ushort _luxVoltage = 0; 
public ushort LuxVoltage 
{ 
    get { return _luxVoltage; } 
    set 
    { 
     if (_luxVoltage != value) 
     { 
      SetProperty(ref _luxVoltage, value); 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^