(十六)完善待办功能

1.状态切换的变色

  • 找到待办块,添加触发器,根据状态改变颜色
<Border
    Grid.RowSpan="2"
    CornerRadius="3">
    <Border.Style>
        <Style TargetType="Border">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Status}" Value="0">
                    <Setter Property="Background" Value="#3CB371" />
                </DataTrigger>

                <DataTrigger Binding="{Binding Status}" Value="1">
                    <Setter Property="Background" Value="#1E90FF" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>

2.删除

  • 前台页面命令绑定DeleteCommand
<Button Content="删除"
        Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}}" 
        CommandParameter="{Binding}"/>
  • model中创建命令
    public DelegateCommand<ToDoDto> DeleteCommand { get; private set; }
  • 构造函数中新建
    DeleteCommand = new DelegateCommand<ToDoDto>(Delete);
  • 删除方法体
private async void Delete(ToDoDto obj)
{
    var deleteResult= await service.DeleteAsync(obj.Id);
    if(deleteResult.Status)
    {
        var model=ToDoDtos.FirstOrDefault(t=>t.Id.Equals(obj.Id));
        if (model!=null)
        {
            ToDoDtos.Remove(model);
        }
    }
}

3.搜索不到数据的提示

  • 图片放到image包,并设置属性输出为资源
  • 前台页面代码添加
<!--没有数据的时候显示添加触发器-->
<StackPanel Grid.Row="1" VerticalAlignment="Center"
            Visibility="{Binding ToDoDtos.Count,Converter={StaticResource IntToVisbility}}">
    <Image Source="/Images/wind.png" Width="120" Height="120"/>
    <TextBlock 
        Margin="0,10" FontSize="18"
        HorizontalAlignment="Center"
        Text="尝试添加一些待办事项,以便在此处查看他们"/>
</StackPanel>
  • 添加值转化器在converter 包
    image
  • 注意
    要引入命名空间
    image
    要在usercontrol的资源文件声明一下
<UserControl.Resources>
    <cv:IntToVisbilityConveter x:Key="IntToVisbility"/>
</UserControl.Resources>

然后引用就可以

4. 点击筛选搜索出待办与已完成功能

  • 多选框索引加绑定
    image

  • 索引声明在model中

private int selectedIndex;
//下拉列表选中状态值
public int SelectedIndex
{
    get { return selectedIndex; }
    set { selectedIndex = value; RaisePropertyChanged(); }
}
  • 在获取数据方法中,在加载动画后
    null就是查询全部,2就是查询已完成,否则查询待办
 //筛选状态设置   把他作为参数传递给后台
 int ? Status= SelectedIndex == 0 ? null : SelectedIndex == 2 ? 1 : 0;
  • 查询方法不可以复用,需要新建一个参数类继承基类参数类,新增一个可以筛选状态的查询方法
  • 找到客户端服务层IToDoService
    返回类型可以参考基类getall方法的返回类型
    Task<ApiResponse<PagedList<ToDoDto>>> GetAllFilterAsync(ToDoParameter parameter); }
  • 新建一个参数类继承基类参数类
    image
  • 客户端实现接口IToDoService,对接的也是后端接口getall
    image
  • API修改
    controller的参数修改
    image
  • API 服务层
    接口修改
    image
    服务类重写方法getall
    新增一个条件
    image
  • 修改获取数据的方法(model层)
    image
posted @ 2023-10-11 15:27  huihui不会写代码  阅读(57)  评论(0)    收藏  举报