WPF数据绑定-用XAML绑定

用XAML绑定
        
WPF元素不仅是数据绑定的目标,它还可以是绑定的源。

可以把一个WPF元素的源属性绑定到另一个WPF元素的目标属性上。


ElementName指向绑定源,Path指向源属性
此处CheckBox为绑定源,IsChecked为源属性,Label为目标

        <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical">
            <CheckBox Name="checkBox" Content="CheckBox"/>
            <Label Name="lb" Content="{Binding ElementName=checkBox,Path=IsChecked}"/>
        </StackPanel>


除了用XAML代码定义绑定信息之外,还可以在隐藏代码中使用Binding元数据扩展来定义。

在隐藏代码中,必须新建一个Binding对象,并设置Path和Source属性。必须把Sourch属性设置为源对象,把Path属性设置为一个ProperyPath实例,它用源对象的属性名进行初始化。对于派生子FrameworkElement的控件,可以调用SetBindind()方法来定义绑定。


        <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical">
            <CheckBox Name="checkBox" Content="CheckBox"/>
            <Label Name="lb" Content=""/>
        </StackPanel>


        private void Init()
        {
            Binding binding = new Binding();
            binding.Source = checkBox;
            binding.Path = new PropertyPath("IsChecked");

            lb.SetBinding(Label.ContentProperty, binding);
        }


对于以下ScaleTransfrom不派生子FrameworkElement,而派生自Freezable基类。使用辅助类BindingOperations可以绑定这类控件。

BindingOperations类的SetBinding()方法需要一个DependencyObject,在本例中是ScaleTransform实例。对于第二个和第三个参数,SetBinding()方法还需要绑定目标的dependency属性和Binding对象。


        <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical">
            <StackPanel.LayoutTransform>
                <ScaleTransform x:Name="scaleTrans"/>
            </StackPanel.LayoutTransform>
            <CheckBox Name="checkBox" Content="CheckBox"/>
            <Label Name="lb" Content="文本"/>
        </StackPanel>
        <Slider HorizontalAlignment="Left" VerticalAlignment="Bottom" x:Name="slider" Value="1" Minimum="0.4" Maximum="3" Width="150"/>

        private void Init()
        {
            Binding binding = new Binding();
            binding.Source = slider;
            binding.Path = new PropertyPath("Value");

            BindingOperations.SetBinding(scaleTrans, ScaleTransform.ScaleXProperty, binding);
            BindingOperations.SetBinding(scaleTrans, ScaleTransform.ScaleYProperty, binding);
        }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值