привязка данных в свойстве wpf [duplicate]

Для поиска файлов, не заканчивающихся на «.tmp», мы используем следующее regex:

^(?!.*[.]tmp$).*$

. Протестировано с тегом Regex Tester дает следующий результат:

1
задан H.B. 22 November 2012 в 15:19
поделиться

2 ответа

Когда вы создаете привязки, вы устанавливаете Source свойства вашего объекта, а не самого объекта. Вы должны указать имя свойства в конструкторе Binding, а затем установить источник в свой объект:

    b1 = new Binding("DeviceConfigured");
    b2 = new Binding("ProcessingData");
    b1.Source = myADS;
    b2.Source = myADS;
2
ответ дан WildCrustacean 24 August 2018 в 02:09
поделиться

Кроме ответа bde вы также можете использовать метод расширения, который позволяет вам установить привязку непосредственно на FrameworkElement

public static void SetBinding(this FrameworkElement target, DependencyProperty property, TargetType source, Expression<Func<TargetType, PropertyType>> property_accessor)
{
  var binding = new Binding(source.PropertyName(property_accessor));
  binding.Source = source;
  target.SetBinding(property, binding);
}


public static string PropertyName(this TargetType obj, Expression<Func> property_accessor)
 { 
return ((MemberExpression)property_accessor.Body).Member.Name; 
}

Вместо ввода

 BindingOperations.SetBinding(txt1, TextBlock.TextProperty, b1);
 BindingOperations.SetBinding(txt2, TextBlock.TextProperty, b2); 

вы можете использовать метод расширения SetBinding, который определен выше

txt1.SetBinding(TextBlock.TextProperty, myADS, x => x.DeviceConfigured);
txt2.SetBinding(TextBlock.TextProperty, myADS, x => x.ProcessingData);

Таким образом, вы избегаете передавать имя свойства как строку.

2
ответ дан TernaryTopiary 24 August 2018 в 02:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: