1

Это должно быть просто, но я застрял! Как создать следующий MultiBinding в коде и применить его к данному определению строки:Как программно создать WPF Grid.RowDefintion.Height binding

<Grid.RowDefinitions> 
    <RowDefinition Height="*"/> 
     <RowDefinition> 
      <RowDefinition.Height> 
       <MultiBinding Converter="{StaticResource MyMultiConverter}"> 
        <Binding ElementName="obj1" Path="x"/> 
        <Binding ElementName="obj2" Path="y"/> 
       </MultiBinding> 
      </RowDefinition.Height> 
     </RowDefinition> 
</Grid.RowDefinitions> 

Спасибо!

ответ

0

Там вы идете:

//Create binding 
var binding = new MultiBinding 
{ 
    Converter = new MyMultiConverter() 
}; 
binding.Bindings.Add(new Binding("x") { ElementName = "obj1" }); 
binding.Bindings.Add(new Binding("y") { ElementName = "obj2" }); 

//create RowDefinition 
var definition = new RowDefinition(); 
//set binding on HeightProperty 
definition.SetBinding(RowDefinition.HeightProperty, binding); 

//'myGrid' is the name of the grid instance 
//add RowDefinition to grid 
myGrid.RowDefinitions.Add(definition); 

Чтобы иметь возможность обрабатывать сетки в коде добавить имя к сетке:

<Grid Name="myGrid"> 
    ... 
</Grid> 
+0

Perfect - спасибо! Определение. SetBinding - это недостающая часть головоломки для меня. –

+0

Если вы когда-либо сталкиваетесь с классом, который не имеет 'SetBinding', но все же наследуется от' DependencyObject', тогда вы можете установить привязки через 'BindingOperations.SetBinding' вместо этого. – Anders