отправка нескольких значений в поле DataGrid Converter из codebehind - PullRequest
1 голос
/ 25 ноября 2011

Я создаю инфраструктурную сетку wpf во время выполнения.

в FieldLayoutInitialized я создаю несвязанные поля.

одно образец несвязанного поля:

UnboundField field = new UnboundField();

field.Name= "Testfield";

field.BindingPath = "Binding path";

FieldLayout fieldLayout;

fieldLayout.Fields.Add(field)

Номое требование - у меня есть поле, которое рассчитывается так, чтобы я создал конвертер.конвертер вернет сумму двух значений.

A3 = A1 + A2;

Если это из файла XAML, мы можем написать как

<Textbox.Value>

<MultiBinding Converter="{StaticResource ConvertnameClass}" Mode="OneWay">
                    <Binding Path="A1"/>
                    <Binding Path="A2"/>
                </MultiBinding>
</Textbox.Value>. 

field.Converter = coverterобъект класса;field.ConverterParameter = ???;

если это одиночная привязка, мы можем отправить field.BindingPath = "значение свойства класса";

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

, пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 29 ноября 2011

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

, поместите это в ваше событие FieldLayoutInitialized

private void FieldLayoutInitialized(object sender, FieldLayoutInitializedEventArgs e) {
  var fieldlayout = e.FieldLayout;

  UnboundField field = new UnboundField();
  field.Name = "Testfield";
  fieldlayout.Fields.Add(field);

  var multiBinding = new MultiBinding();
  multiBinding.Mode = BindingMode.OneWay;
  multiBinding.Converter = new MultiBindingConverter(); // implement IMultiValueConverter
  multiBinding.Bindings.Add(new Binding() { Path = new PropertyPath("A1"), Mode = BindingMode.OneWay });
  multiBinding.Bindings.Add(new Binding() { Path = new PropertyPath("A2"), Mode = BindingMode.OneWay });

  field.Binding = multiBinding;
}

, вероятно, вы должны указать Source или RelativeSource для двух привязок

надеюсь, это поможет (я использовал 11,1 libs)

...