WPF 创建Bar Chart

通过数据绑定,数据模板,触发器实现

效果如下:

1. 创建数据模型
public class Course
{
  public string Name { get; set; }
  public int Grade { get; set; }
}
2.创建数据模型的集合
public class Courses
{
  public List<Course> CourseList { get; set; } = GetCourses();

  public static List<Course> GetCourses()
  {
    return new List<Course>()
    {
          new Course {Name="Math", Grade=77*3},
          new Course {Name="Science", Grade=97*3},
          new Course {Name="English", Grade=87*3},
          new Course {Name="Art", Grade=67*3},
          new Course {Name="Chinese", Grade=80*3}
      }.ToList();
  }
}

数值乘以3的目的是让创建的条形图变成长一些,视图更佳。

3. 添加DataContent
<Window.DataContext>
  <local:Courses/>
</Window.DataContext>
4.UI创建数据绑定
<Grid>

<DockPanel Margin="5">

  <TextBlock FontWeight="Black" FontSize="30" DockPanel.Dock="Top" Margin="3">Bar Chart Demo</TextBlock>

  <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">

    <TextBlock FontWeight="Black" Margin="3" Text="Math" FontSize="20" Foreground="Blue"/>

    <TextBlock FontWeight="Black" Margin="3"  Text="Science" FontSize="20" Foreground="Orange"/>

    <TextBlock FontWeight="Black" Margin="3"  Text="English" FontSize="20" Foreground="Green"/>

    <TextBlock FontWeight="Black" Margin="3"  Text="Art" FontSize="20" Foreground="Red"/>

    <TextBlock FontWeight="Black" Margin="3"  Text="Chinese" FontSize="20" Foreground="Violet"/>

  </StackPanel>

  

<ListBox DockPanel.Dock="Bottom" Margin="3" x:Name="listChart"

                    ItemsSource="{Binding CourseList}"

                    >

    <ListBox.ItemTemplate>

      <DataTemplate>

        <Rectangle Height="30" Width="{Binding Grade}">

            <!-- Fill="LightGreen"-->

            <Rectangle.Style>

              <Style TargetType="Rectangle">

                <Setter Property="Fill" Value="Black"/>

            <Style.Triggers>

              <DataTrigger Binding="{Binding Name}" Value="Math">

                <Setter Property="Fill" Value="Blue"></Setter>

              </DataTrigger>

              <DataTrigger Binding="{Binding Name}" Value="Science">

                  <Setter Property="Fill" Value="Orange"></Setter>

              </DataTrigger>

              <DataTrigger Binding="{Binding Name}" Value="English">

                  <Setter Property="Fill" Value="Green"></Setter>

              </DataTrigger>

              <DataTrigger Binding="{Binding Name}" Value="Chinese">

                  <Setter Property="Fill" Value="Red"></Setter>

              </DataTrigger>

              <DataTrigger Binding="{Binding Name}" Value="Art">

                  <Setter Property="Fill" Value="Violet"></Setter>

                </DataTrigger>

</Style.Triggers>

      </Style>

            </Rectangle.Style>

          </Rectangle>

        </DataTemplate>

      </ListBox.ItemTemplate>

    </ListBox>

  </DockPanel>

</Grid>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值