WPF数据绑定的几种方式

WPF数据绑定

绑定的几种方式

Binding对象、静态变量、常量以及枚举类型

    <Window.Resources>
        <!--  不是静态类型以及常量枚举要先指定  -->
        <local:MyResource x:Key="myress" />
    </Window.Resources>
    <Window.DataContext>
        <!--  定义上下文  -->
        <local:MainViewModel />
    </Window.DataContext>
    <Grid>
        <StackPanel>
            <!--DataContext上下文方式binding-->
            <TextBlock Text="{Binding Path=Message}" />
            <!--普通对象绑定-->
            <TextBlock Text="{Binding Source={StaticResource myress}, Path=MessageClass}" />
            <!--静态对象绑定-->
            <TextBlock Text="{Binding Source={x:Static local:MyResource.StaticString}, Path=.}" />
           <!--常量绑定-->
            <TextBlock Text="{Binding Source={x:Static local:MyResource.ConstString}, Path=.}" />
            <!--枚举绑定-->
            <TextBlock Text="{Binding Source={x:Static local:Sex.男}, Path=.}" />
              <!--对于静态对象,常量,枚举要用 Source={x:Static 位置绑定-->
        </StackPanel>
    </Grid>
    class MyResource
    {
        public string MessageClass { get; } = "Public Property";
        public static string StaticString = "static string";
        public const string ConstString = "const ConstString";
    }
    public enum Sex
    {,}

显示结果
在这里插入图片描述

1次绑定多条信息

            <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="Position: {0},{1:F3}">
                        <Binding ElementName="wpfForm" Path="Top"/>
                        <Binding ElementName="wpfForm" Path="Left"/>
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>

绑定的各种小技巧

            <!--  绑定的内容为null时显示的内容  -->
            <TextBlock Text="{Binding Path=MessageTest, TargetNullValue='用户名'}" />
            <!--找不到绑定信息提示内容-->
            <TextBlock Text="{Binding Path=MessageTest1, FallbackValue='找不到绑定信息'}" />


ElementName 元素绑定

        <StackPanel >
            <TextBlock Text="Admin" Name="txtB1" FontSize="30"/>
            <Button Content="{Binding ElementName=txtB1 ,Path=Text}"/>
        </StackPanel>
        //Button绑定了TextBlock 中的Text属性

RelativeSource 相对于本身或父元素

            <!--绑定自身的一些属性-->
            <Button Content="{Binding RelativeSource={RelativeSource Mode=Self} ,Path=Height}"/>
            <!--绑定其父级容器的属性-->
            <Button Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor ,AncestorType={x:Type Grid}},Path=RowDefinitions.Count}"/>

ItemSouce 绑定到集合元素

<ListBox ItemsSource="{Binding Menus}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Background="Transparent" Orientation="Horizontal">
                <!--  图标以及内容  -->
                <materialDesign:PackIcon Margin="15,0" Kind="{Binding Icon}" />
                <TextBlock Text="{Binding Title}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

DataContext MVVM上下文绑定

这个是最常用的,就不写代码了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值