Skip to content

Commit 989b36a

Browse files
committed
add: 选项卡删除功能
1 parent dd7fb57 commit 989b36a

File tree

2 files changed

+61
-12
lines changed

2 files changed

+61
-12
lines changed

llcomNext/LLCOM/ViewModels/Pages/DataPageViewModel.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
using System;
22
using System.Collections.ObjectModel;
3+
using System.Threading.Tasks;
34
using CommunityToolkit.Mvvm.ComponentModel;
5+
using CommunityToolkit.Mvvm.Input;
6+
using Ursa.Controls;
47

58
namespace LLCOM.ViewModels;
69

@@ -21,8 +24,24 @@ public DataPageViewModel(Func<Type, ViewModelBase> getService)
2124
{
2225
_getService = getService;
2326

24-
_tabList.Add(new DataPageTabItemModel("test1", _getService(typeof(LogPageViewModel))));
25-
_tabList.Add(new DataPageTabItemModel("test2", _getService(typeof(OnlinePageViewModel))));
27+
TabList.Add(new DataPageTabItemModel("(1)串口", _getService(typeof(LogPageViewModel))));
28+
TabList.Add(new DataPageTabItemModel("(2)TCP服务端", _getService(typeof(OnlinePageViewModel))));
29+
}
30+
31+
[RelayCommand]
32+
private void AddTabItem()
33+
{
34+
var name = $"({TabList.Count + 1})测试xx";
35+
TabList.Add(new DataPageTabItemModel(name, _getService(typeof(OnlinePageViewModel))));
36+
}
37+
38+
[RelayCommand]
39+
private async Task RemoveTabItem(DataPageTabItemModel model)
40+
{
41+
var r = await MessageBox.ShowAsync("确定要删除这个测试卡吗?", "删除提示",
42+
icon: MessageBoxIcon.Warning, button: MessageBoxButton.YesNo);
43+
if(r == MessageBoxResult.Yes)
44+
TabList.Remove(model);
2645
}
2746
}
2847

llcomNext/LLCOM/Views/Pages/DataPageView.axaml

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,44 @@
1212
<Design.DataContext>
1313
<vm:DataPageViewModel />
1414
</Design.DataContext>
15-
<TabControl
16-
DisplayMemberBinding="{Binding Header, x:DataType=vm:DataPageTabItemModel}"
17-
ItemsSource="{Binding TabList}"
18-
SelectedIndex="{Binding SelectedTabIndex}">
19-
<TabControl.ContentTemplate>
20-
<DataTemplate x:DataType="vm:DataPageTabItemModel">
21-
<UserControl Content="{Binding Content}" />
22-
</DataTemplate>
23-
</TabControl.ContentTemplate>
24-
</TabControl>
15+
<Grid>
16+
<TabControl ItemsSource="{Binding TabList}" SelectedIndex="{Binding SelectedTabIndex}">
17+
<TabControl.ItemTemplate>
18+
<DataTemplate>
19+
<StackPanel Orientation="Horizontal" Spacing="0">
20+
<TextBlock VerticalAlignment="Center" Text="{Binding Header}" />
21+
<Button
22+
Width="20"
23+
Height="20"
24+
MinWidth="0"
25+
MinHeight="0"
26+
Margin="0"
27+
Padding="0"
28+
VerticalAlignment="Center"
29+
Command="{Binding $parent[UserControl].((vm:DataPageViewModel)DataContext).RemoveTabItemCommand}"
30+
CommandParameter="{Binding}"
31+
Theme="{DynamicResource BorderlessButton}">
32+
<TextBlock
33+
Padding="0"
34+
HorizontalAlignment="Center"
35+
VerticalAlignment="Center"
36+
FontFamily="{DynamicResource Phosphor}"
37+
Text="&#xE4F6;" />
38+
</Button>
39+
</StackPanel>
40+
</DataTemplate>
41+
</TabControl.ItemTemplate>
42+
<TabControl.ContentTemplate>
43+
<DataTemplate x:DataType="vm:DataPageTabItemModel">
44+
<UserControl Content="{Binding Content}" />
45+
</DataTemplate>
46+
</TabControl.ContentTemplate>
47+
</TabControl>
48+
49+
<Button
50+
HorizontalAlignment="Stretch"
51+
VerticalAlignment="Bottom"
52+
Command="{Binding AddTabItemCommand}"
53+
Content="ADD" />
54+
</Grid>
2555
</UserControl>

0 commit comments

Comments
 (0)