(十六)完善待办功能
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]()











浙公网安备 33010602011771号