【问题标题】:How to programmatically create WPF Grid.RowDefintion.Height binding如何以编程方式创建 WPF Grid.RowDefintion.Height 绑定
【发布时间】:2015-04-29 17:53:58
【问题描述】:

这应该很简单,但我卡住了!如何在代码中创建以下多重绑定并将其应用于给定的行定义:

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

谢谢!

【问题讨论】:

    标签: wpf multibinding programmatically-created rowdefinition


    【解决方案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>
    

    【讨论】:

    • 完美 - 谢谢!对我来说,定义.SetBinding 是拼图中缺失的部分。
    • 如果你遇到了一个没有SetBinding但仍然继承自DependencyObject的类,那么你可以通过BindingOperations.SetBinding来设置绑定。
    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2016-10-24
    • 2011-11-18
    • 2012-03-21
    • 2011-05-08
    相关资源
    最近更新 更多