Как программно создать привязку WPF Grid.RowDefintion.Height

Это должно быть просто, но я застрял! Как создать следующую мультисвязку в коде и применить ее к заданному определению строки:

<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>

Спасибо!

1 ответ

Решение

Там вы идете:

//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>
Другие вопросы по тегам