WPF 在Xaml 中的数据源

前言:

    为什么要写这篇文章呢,因为我平时学的东西挺多的,但是遇到一些问题的时候,总是觉得自己在那里做过,没有做好总结。借助博客平台,将自己用的,学到的做个记录,方便自己和需要的人进行查阅。

    这篇文章的内容:正如标题所述,WPF 的xaml 中的数据源。其实WPF 开发中我认为数据的绑定,可谓是重要操作,一个系统没有做好数据的接入,那么它将失去灵魂。

正文:

1.WPF 中的xaml 数据源有几种形式

    共有三种形式,分别为DataContext ,Resource,Element(Relativesource)

<Window x:Class="LiveCharts2Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LiveCharts2Demo"
        mc:Ignorable="d"
        xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF"
        Title="MainWindow" Height="450" Width="800">

    <Window.DataContext>
        <local:ViewModel x:Name="ttm"/>
    </Window.DataContext>

    <lvc:CartesianChart
        Series="{Binding Series}">
    </lvc:CartesianChart>
</Window>

上图是DataContext的写法。相当于在该Window 中定义了一个ViewModel 的对象。

 

Resouce 的写法

<Window x:Class="LiveCharts2Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LiveCharts2Demo"
        mc:Ignorable="d"
        xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF"
        Title="MainWindow" Height="450" Width="800">

    <Grid>
        <Grid.Resources>
            <local:ViewModel x:Key="vmy"/>
        </Grid.Resources>
        <lvc:CartesianChart
        Series="{Binding Source={StaticResource vmy},Path=Series}">
        </lvc:CartesianChart>
    </Grid>
    
</Window>

注意,这里用Resource 后,在binding 的时候区别,这里需要指定Source ,和Path。特别注意,每一个resouce 都需要一个key ,像上面的vmy 就是一个key

RelativeSource 的写法

 

<Window x:Class="LiveCharts2Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LiveCharts2Demo"
        mc:Ignorable="d"
        xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF"
        Title="MainWindow" Height="450" Width="800">

    <Grid>
        <Grid.Resources>
            <local:ViewModel x:Key="vmy"/>
        </Grid.Resources>
        <Grid x:Name="张三">
            <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid}},Path=Name}"></TextBlock>
            <TextBlock  Margin="120,0,0,0" x:Name="测试丽丽" Text="{Binding RelativeSource={RelativeSource Self},Path=Name}"></TextBlock>
        </Grid>
    </Grid>
    
</Window>

还有一种是在做ControlTemplate 用的比较多的binding 

 {Binding RelativeSource={RelativeSource TemplatedParent}}

这里就不代码举例了,等后边有真正的需求的时候,补上。

WPF(Windows Presentation Foundation),ListView用于显示一列或多列的数据列表,通常通过XAML来配置。以下是添加数据到ListView的基本步骤: 1. 首先,在XAML文件声明ListView控件,并设置它的基本属性如Name、ItemsSource等: ```xml <ListView x:Name="myListView"> <ListView.View> <GridView> <!-- 列模板将会在这里定义 --> </GridView> </ListView.View> </ListView> ``` 2. 定义列模板(ColumnDefinition),告诉ListView每个列的宽度和样式: ```xml <GridView> <GridView.Columns> <GridViewColumn Header="标题1" DisplayMemberBinding="{Binding Property1}" Width="*"/> <GridViewColumn Header="标题2" DisplayMemberBinding="{Binding Property2}" Width="*"/> <!-- 添加更多列... --> </GridView.Columns> </GridView> ``` 这里的`DisplayMemberBinding`绑定到你的数据模型的Property1和Property2属性。 3. 设置ItemsSource,使其关联到包含数据的对象集合: ```xml <ListView x:Name="myListView"> <ListView.ItemsSource> <!-- 这里应放置你的数据源,例如一个ObservableCollection或ICollectionView --> <local:MyDataModelCollection /> </ListView.ItemsSource> </ListView> ``` 这里假设有一个名为`MyDataModelCollection`的类,它实现了INotifyPropertyChanged,以便当数据变化时自动更新视图。 4. 最后,确保你的数据模型(比如`MyDataModel`)有相应的属性对应于列模板指定的`DisplayMemberBinding`。 完成以上配置后,ListView会根据你提供的数据源填充列内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值