返回提交历史
Modified
SpaceEngineersBlueprintEditor/Implements/Services/NavigationViewService.cs
+1
-1
Added
SpaceEngineersBlueprintEditor/Model/CubeGridInfo.cs
+3
-0
Modified
SpaceEngineersBlueprintEditor/SpaceEngineersBlueprintEditor.csproj
+3
-3
Modified
SpaceEngineersBlueprintEditor/Utilities/Helpers/Extensions.cs
+3
-0
Deleted
SpaceEngineersBlueprintEditor/Utilities/Helpers/ResourceExtensions.cs
+0
-9
Added
SpaceEngineersBlueprintEditor/Utilities/Helpers/SpaceEngineersHelper.cs
+13
-0
Modified
SpaceEngineersBlueprintEditor/ViewModels/AppShellPageViewModel.cs
+1
-4
Added
SpaceEngineersBlueprintEditor/ViewModels/AsyncViewModelBase.cs
+10
-0
Modified
SpaceEngineersBlueprintEditor/ViewModels/BlueprintDetailPageViewModel.cs
+108
-6
Modified
SpaceEngineersBlueprintEditor/ViewModels/BlueprintEditPageViewModel.cs
+24
-9
Modified
SpaceEngineersBlueprintEditor/ViewModels/BlueprintsViewPageViewModel.cs
+5
-0
Modified
SpaceEngineersBlueprintEditor/Views/BlueprintDetailPage.xaml
+52
-11
Modified
SpaceEngineersBlueprintEditor/Views/BlueprintDetailPage.xaml.cs
+2
-2
Modified
SpaceEngineersBlueprintEditor/Views/BlueprintEditPage.xaml.cs
+3
-4
Modified
SpaceEngineersBlueprintEditor/Views/BlueprintsViewPage.xaml
+2
-2
SpaceEngineersModDev/SpaceEngineersBlueprintEditorInWinUI
完善蓝图查看 完成蓝图预览页到编辑页的传递
41c4b63
代码差异
15 个文件
+230
-51
@@ -63,7 +63,7 @@ internal class NavigationViewService : GlobalServiceBase, INavigationViewService
63
63
if (item.GetNavigateTo() is string pageName && pageName == pageType.FullName)
64
64
{
65
65
var itemParameter = item.GetNavigationParameter();
66
if (parameter is string && Equals(parameter, itemParameter) || parameter == itemParameter)
66
if (parameter is string && Equals(parameter, itemParameter) || parameter == itemParameter || itemParameter is null)
67
67
return item;
68
68
}
69
69
var selectedChild = GetSelectedItem(item.MenuItems, pageType, parameter);
@@ -0,0 +1,3 @@
1
namespace SpaceEngineersBlueprintEditor.Model;
2
3
public record class CubeGridInfo(string GridName, string CubeInGridCount) { }
@@ -41,12 +41,12 @@
41
41
</ItemGroup>
42
42
<ItemGroup>
43
43
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" />
44
<PackageReference Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.1.240916" />
44
<PackageReference Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.2.241112-preview1" />
45
45
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1742" />
46
46
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.6.240923002" />
47
47
<PackageReference Include="WinUIEx" Version="2.4.2" />
48
<PackageReference Include="XFEExtension.NetCore" Version="3.1.4" />
49
<PackageReference Include="XFEExtension.NetCore.AutoConfig" Version="1.1.1" />
48
<PackageReference Include="XFEExtension.NetCore" Version="3.2.0" />
49
<PackageReference Include="XFEExtension.NetCore.AutoConfig" Version="1.3.0" />
50
50
<PackageReference Include="XFEExtension.NetCore.AutoPath" Version="1.0.1" />
51
51
<PackageReference Include="XFEExtension.NetCore.TodoHighLight" Version="1.0.0" />
52
52
</ItemGroup>
@@ -1,9 +1,12 @@
1
1
using Microsoft.UI.Xaml.Media.Imaging;
2
using Microsoft.Windows.ApplicationModel.Resources;
2
3
using SpaceEngineersBlueprintEditor.Model;
3
4
4
5
namespace SpaceEngineersBlueprintEditor.Utilities.Helpers;
5
6
6
7
public static class Extensions
7
8
{
9
private static readonly ResourceLoader _resourceLoader = new();
10
public static string GetLocalized(this string resourceKey) => _resourceLoader.GetString(resourceKey);
8
11
public static BlueprintInfoViewData ToBlueprintInfoViewData(this BlueprintInfo blueprintInfo) => new(new BitmapImage(blueprintInfo.HasImage ? new(blueprintInfo.ImagePath) : new Uri("ms-appx:///Assets/Images/BlueprintDrag.png", UriKind.RelativeOrAbsolute)), !blueprintInfo.HasBlueprint, blueprintInfo.Name, blueprintInfo.FileSize, blueprintInfo.BlueprintPath);
9
12
}
@@ -1,9 +0,0 @@
1
using Microsoft.Windows.ApplicationModel.Resources;
2
3
namespace SpaceEngineersBlueprintEditor.Utilities.Helpers;
4
5
public static class ResourceExtensions
6
{
7
private static readonly ResourceLoader _resourceLoader = new();
8
public static string GetLocalized(this string resourceKey) => _resourceLoader.GetString(resourceKey);
9
}
@@ -0,0 +1,13 @@
1
using Sandbox.Definitions;
2
using VRage.Collections;
3
using VRage.Game;
4
5
namespace SpaceEngineersBlueprintEditor.Utilities.Helpers;
6
7
public static class SpaceEngineersHelper
8
{
9
public static DictionaryValuesReader<MyDefinitionId, MyDefinitionBase> AllDefinitions => MyDefinitionManager.Static.GetAllDefinitions();
10
public static IEnumerable<MyCubeBlockDefinition> CubeBlockDefinitions => AllDefinitions.Where(definition => definition is MyCubeBlockDefinition).Cast<MyCubeBlockDefinition>();
11
public static IEnumerable<MyComponentDefinition> ComponentDefinitions => AllDefinitions.Where(definition => definition is MyComponentDefinition).Cast<MyComponentDefinition>();
12
public static IEnumerable<MyPhysicalItemDefinition> ItemDefinitions => AllDefinitions.Where(definition => definition is MyPhysicalItemDefinition).Cast<MyPhysicalItemDefinition>();
13
}
@@ -17,8 +17,5 @@ public partial class AppShellPageViewModel : ViewModelBase
17
17
18
18
public AppShellPageViewModel() => NavigationViewService.NavigationService.Navigated += NavigationService_Navigated;
19
19
20
private void NavigationService_Navigated(object? sender, NavigationEventArgs e)
21
{
22
CanGoBack = NavigationViewService.NavigationService.CanGoBack;
23
}
20
private void NavigationService_Navigated(object? sender, NavigationEventArgs e) => CanGoBack = NavigationViewService.NavigationService.CanGoBack;
24
21
}
@@ -0,0 +1,10 @@
1
using CommunityToolkit.Mvvm.ComponentModel;
2
using Microsoft.UI.Dispatching;
3
4
namespace SpaceEngineersBlueprintEditor.ViewModels;
5
6
public abstract class AsyncViewModelBase(DispatcherQueue dispatcherQueue) : ObservableObject
7
{
8
protected DispatcherQueue _dispatcherQueue = dispatcherQueue;
9
protected void OnPropertyChangedAsync(string? propertyName = null) => _dispatcherQueue.TryEnqueue(() => OnPropertyChanged(propertyName));
10
}
@@ -1,22 +1,124 @@
1
using SpaceEngineersBlueprintEditor.Implements.Services;
1
using CommunityToolkit.Mvvm.ComponentModel;
2
using CommunityToolkit.Mvvm.Input;
3
using Microsoft.UI.Xaml.Media;
4
using Sandbox.Definitions;
5
using SpaceEngineersBlueprintEditor.Implements.Services;
2
6
using SpaceEngineersBlueprintEditor.Interface.Services;
3
7
using SpaceEngineersBlueprintEditor.Model;
8
using SpaceEngineersBlueprintEditor.SpaceEngineersCore;
4
9
using SpaceEngineersBlueprintEditor.Utilities;
10
using SpaceEngineersBlueprintEditor.Views;
11
using System.Collections.ObjectModel;
12
using VRage.Game;
5
13
6
14
namespace SpaceEngineersBlueprintEditor.ViewModels;
7
15
8
16
public partial class BlueprintDetailPageViewModel : ViewModelBase
9
17
{
18
[ObservableProperty]
19
private string authorName = "蓝图作者:加载中...";
20
[ObservableProperty]
21
private string blueprintFileSize = "蓝图大小:加载中...";
22
[ObservableProperty]
23
private string blueprintPath = "蓝图路径:加载中...";
24
[ObservableProperty]
25
private string isBlueprintDestructible = "是否可被破坏:加载中...";
26
[ObservableProperty]
27
private string isBlueprintEditable = "是否可在游戏内编辑:加载中...";
28
[ObservableProperty]
29
private string totalGridNumber = "网格总数:加载中...";
30
[ObservableProperty]
31
private string totalCubeNumber = "方块总数:加载中...";
32
[ObservableProperty]
33
private bool isProgressRingVisible = true;
34
private BlueprintInfoViewData? currentBlueprintInfoViewData;
35
private MyObjectBuilder_Definitions? currentDefinitions;
36
private MyObjectBuilder_ShipBlueprintDefinition? currentBlueprint;
10
37
private readonly INavigationViewService? navigationViewService = GlobalServiceManager.GetService<INavigationViewService>();
38
private readonly IMessageService? messageService = GlobalServiceManager.GetService<IMessageService>();
39
public ObservableCollection<string> DLCList { get; } = [];
40
public ObservableCollection<CubeGridInfo> CubeGridList { get; } = [];
11
41
public IBackgroundImageService? BackgroundImageService { get; set; } = GlobalServiceManager.GetService<IBackgroundImageService>();
12
42
public INavigationParameterService<BlueprintInfoViewData> NavigationParameterService { get; set; } = new NavigationParameterService<BlueprintInfoViewData>();
13
public BlueprintDetailPageViewModel()
14
{
15
NavigationParameterService.ParameterChange += NavigationParameterService_ParameterChange;
16
}
43
public BlueprintDetailPageViewModel() => NavigationParameterService.ParameterChange += NavigationParameterService_ParameterChange;
17
44
18
private void NavigationParameterService_ParameterChange(object? sender, BlueprintInfoViewData e)
45
private async void NavigationParameterService_ParameterChange(object? sender, BlueprintInfoViewData e)
19
46
{
47
if (currentBlueprintInfoViewData == e) return;
48
AuthorName = "蓝图作者:加载中...";
49
BlueprintFileSize = "蓝图大小:加载中...";
50
BlueprintPath = "蓝图路径:加载中...";
51
IsBlueprintDestructible = "是否可被破坏:加载中...";
52
IsBlueprintEditable = "是否可在游戏内编辑:加载中...";
53
TotalGridNumber = "网格总数:加载中...";
54
TotalCubeNumber = "方块总数:加载中...";
55
DLCList.Clear();
56
CubeGridList.Clear();
57
IsProgressRingVisible = true;
20
58
if (navigationViewService is not null) navigationViewService.Header = e.Name;
59
currentBlueprintInfoViewData = e;
60
if (e.NoBlueprint)
61
{
62
messageService?.ShowMessage("该蓝图不包含蓝图文件(bp.sbc)", "警告", InfoBarSeverity.Warning);
63
BlueprintFileSize = $"蓝图大小:{currentBlueprintInfoViewData.FileSize}";
64
BlueprintPath = $"蓝图路径:{currentBlueprintInfoViewData.FilePath}";
65
IsProgressRingVisible = false;
66
return;
67
}
68
await Task.Delay(100);
69
await Task.Run(() =>
70
{
71
currentDefinitions = SpaceEngineerDefinitions.Load<MyObjectBuilder_Definitions>(e.FilePath);
72
if (currentDefinitions is not null && currentDefinitions.ShipBlueprints is not null && currentDefinitions.ShipBlueprints.Length > 0)
73
currentBlueprint = currentDefinitions.ShipBlueprints[0];
74
});
75
if (currentBlueprint is not null)
76
{
77
AuthorName = $"蓝图作者:{currentBlueprint.DisplayName}(Steam ID: {currentBlueprint.OwnerSteamId})";
78
BlueprintFileSize = $"蓝图大小:{currentBlueprintInfoViewData.FileSize}";
79
BlueprintPath = $"蓝图路径:{currentBlueprintInfoViewData.FilePath}";
80
IsBlueprintDestructible = $"是否可被破坏:{(currentBlueprint.CubeGrids.Any(grid => !grid.DestructibleBlocks) ? currentBlueprint.CubeGrids.Any(grid => grid.DestructibleBlocks) ? "部分可被破坏" : "整体不可破坏" : "可被破坏")}";
81
IsBlueprintEditable = $"是否可在游戏内编辑:{(currentBlueprint.CubeGrids.Any(grid => !grid.Editable) ? currentBlueprint.CubeGrids.Any(grid => grid.Editable) ? "部分可编辑" : "整体不可编辑" : "可编辑")}";
82
if (currentBlueprint.DLCs is not null)
83
{
84
foreach (var dlc in currentBlueprint.DLCs)
85
if (dlc is not null)
86
DLCList.Add(dlc);
87
}
88
else
89
{
90
DLCList.Add("无DLC");
91
}
92
if (currentBlueprint.CubeGrids is not null)
93
{
94
int totalCubeCount = 0;
95
foreach (var grid in currentBlueprint.CubeGrids)
96
if (grid is not null)
97
{
98
totalCubeCount += grid.CubeBlocks.Count;
99
CubeGridList.Add(new($"网格名称:{grid.DisplayName}", $"方块数量:{grid.CubeBlocks.Count}"));
100
}
101
TotalCubeNumber = $"方块总数:{totalCubeCount}";
102
TotalGridNumber = $"网格总数:{currentBlueprint.CubeGrids.Length}";
103
}
104
else if (currentBlueprint.CubeGrid is not null)
105
{
106
CubeGridList.Add(new($"网格名称:{currentBlueprint.CubeGrid.DisplayName}", $"方块数量:{currentBlueprint.CubeGrid.CubeBlocks.Count}"));
107
}
108
else
109
{
110
CubeGridList.Add(new("未找到网格", "方块数量:无"));
111
}
112
IsProgressRingVisible = false;
113
messageService?.ShowMessage("蓝图加载完成", "完成", InfoBarSeverity.Success);
114
}
115
else
116
{
117
IsProgressRingVisible = false;
118
messageService?.ShowMessage("未能加载蓝图", "错误", InfoBarSeverity.Error);
119
}
21
120
}
121
122
[RelayCommand]
123
void GoToEditorPage() => navigationViewService?.NavigateTo(typeof(BlueprintEditPage), currentDefinitions);
22
124
}
@@ -1,20 +1,35 @@
1
1
using SpaceEngineersBlueprintEditor.Implements.Services;
2
2
using SpaceEngineersBlueprintEditor.Interface.Services;
3
using SpaceEngineersBlueprintEditor.Model;
3
using SpaceEngineersBlueprintEditor.Utilities;
4
using VRage.Game;
4
5
5
6
namespace SpaceEngineersBlueprintEditor.ViewModels;
6
7
7
8
public partial class BlueprintEditPageViewModel : ViewModelBase
8
9
{
9
public INavigationParameterService<BlueprintInfoViewData> NavigationParameterService { get; set; } = new NavigationParameterService<BlueprintInfoViewData>();
10
private MyObjectBuilder_Definitions? currentDefinitions;
11
private MyObjectBuilder_ShipBlueprintDefinition? currentShipBlueprint;
12
private readonly IMessageService? messageService = GlobalServiceManager.GetService<IMessageService>();
13
public INavigationParameterService<MyObjectBuilder_Definitions> NavigationParameterService { get; set; } = new NavigationParameterService<MyObjectBuilder_Definitions>();
14
public BlueprintEditPageViewModel() => NavigationParameterService.ParameterChange += NavigationParameterService_ParameterChange;
10
15
11
public BlueprintEditPageViewModel()
16
private void NavigationParameterService_ParameterChange(object? sender, MyObjectBuilder_Definitions e)
12
17
{
13
NavigationParameterService.ParameterChange += NavigationParameterService_ParameterChange;
14
}
15
16
private void NavigationParameterService_ParameterChange(object? sender, BlueprintInfoViewData e)
17
{
18
18
if (currentDefinitions is not null)
19
{
20
currentDefinitions = e;
21
if (currentDefinitions.ShipBlueprints is not null && currentDefinitions.ShipBlueprints.Length > 0)
22
{
23
currentShipBlueprint = currentDefinitions.ShipBlueprints[0];
24
}
25
else
26
{
27
messageService?.ShowMessage("未能飞船蓝图定义", "错误", InfoBarSeverity.Error);
28
}
29
}
30
else
31
{
32
messageService?.ShowMessage("未能找到蓝图定义", "错误", InfoBarSeverity.Error);
33
}
19
34
}
20
35
}
@@ -85,7 +85,10 @@ public partial class BlueprintsViewPageViewModel : ViewModelBase
85
85
void OpenFolder()
86
86
{
87
87
if (currentBlueprintInfoViewData is not null && Path.GetDirectoryName(currentBlueprintInfoViewData.FilePath) is string path)
88
{
88
89
Process.Start("explorer.exe", path);
90
BlueprintsViewPage.Current?.commandBarFlyout.Hide();
91
}
89
92
}
90
93
91
94
[RelayCommand]
@@ -96,6 +99,7 @@ public partial class BlueprintsViewPageViewModel : ViewModelBase
96
99
var targetPath = $@"{Path.GetDirectoryName(path)}\{CopyFolderText}";
97
100
FileHelper.CopyDirectory(path, targetPath);
98
101
messageService?.ShowMessage($"已复制至:{targetPath}", "完成", InfoBarSeverity.Success);
102
BlueprintsViewPage.Current?.commandBarFlyout.Hide();
99
103
await RefreshBlueprints();
100
104
}
101
105
}
@@ -107,6 +111,7 @@ public partial class BlueprintsViewPageViewModel : ViewModelBase
107
111
{
108
112
Directory.Delete(path, true);
109
113
messageService?.ShowMessage($"已删除:{path}", "完成", InfoBarSeverity.Success);
114
BlueprintsViewPage.Current?.commandBarFlyout.Hide();
110
115
await RefreshBlueprints();
111
116
}
112
117
}
@@ -4,25 +4,66 @@
4
4
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
5
5
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
6
6
xmlns:local="using:SpaceEngineersBlueprintEditor.Views"
7
xmlns:model="using:SpaceEngineersBlueprintEditor.Model"
7
8
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
8
9
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
9
10
mc:Ignorable="d">
10
11
11
12
<Grid>
12
<Grid>
13
13
<Grid Canvas.ZIndex="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Visibility="{x:Bind ViewModel.IsProgressRingVisible, Mode=OneWay}" Background="{ThemeResource SmokeFillColorDefaultBrush}">
14
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" CornerRadius="15" Padding="100">
15
<Grid.Background>
16
<SolidColorBrush Color="Black" Opacity="0.5"/>
17
</Grid.Background>
18
<StackPanel Spacing="30">
19
<TextBlock Text="Loading Blueprint..." Foreground="White" FontSize="34" VerticalAlignment="Center" HorizontalAlignment="Center"/>
20
<ProgressRing IsActive="True" Width="60" Height="60" VerticalAlignment="Center" HorizontalAlignment="Center"/>
21
</StackPanel>
22
</Grid>
14
23
</Grid>
15
24
<ScrollView Canvas.ZIndex="0">
16
<StackPanel Orientation="Vertical">
17
<Grid HorizontalAlignment="Left" VerticalAlignment="Top" ColumnDefinitions="350, *" ColumnSpacing="20" RowDefinitions="*, *, *, *, *, *" RowSpacing="20">
18
<Image x:Name="detailPreviewImage" Grid.RowSpan="6" Source="{x:Bind Parameter.BlueprintImage}" Width="350" Stretch="Uniform"/>
19
<TextBlock Grid.Column="1" Grid.Row="0" Text="蓝图基本信息:"/>
20
<!--<TextBlock Grid.Column="1" Grid.Row="1" Text="{x:Bind 蓝图作者:}"/>
21
<TextBlock Grid.Column="1" Grid.Row="4" Text="{x:Bind 蓝图大小}"/>
22
<TextBlock Grid.Column="1" Grid.Row="5" Text="{x:Bind 蓝图位置:}"/>
23
<TextBlock Grid.Column="1" Grid.Row="2" Text="{x:Bind 是否可破坏:}"/>
24
<TextBlock Grid.Column="1" Grid.Row="3" Text="{x:Bind 是否可在游戏内编辑:}"/>-->
25
<StackPanel Orientation="Vertical" Spacing="20">
26
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top" Height="300" ColumnDefinitions="Auto, *, Auto" ColumnSpacing="20" RowDefinitions="*, *, *, *, *, *">
27
<Image x:Name="detailPreviewImage" Grid.RowSpan="6" Stretch="Uniform"/>
28
<TextBlock Grid.Column="1" Grid.Row="0" IsTextSelectionEnabled="True" TextWrapping="Wrap" Text="蓝图基本信息" Style="{ThemeResource BodyStrongTextBlockStyle}"/>
29
<TextBlock Grid.Column="1" Grid.Row="1" IsTextSelectionEnabled="True" TextWrapping="Wrap" Text="{x:Bind ViewModel.AuthorName, Mode=OneWay}"/>
30
<TextBlock Grid.Column="1" Grid.Row="2" IsTextSelectionEnabled="True" TextWrapping="WrapWholeWords" Text="{x:Bind ViewModel.BlueprintFileSize, Mode=OneWay}"/>
31
<TextBlock Grid.Column="1" Grid.Row="3" IsTextSelectionEnabled="True" TextWrapping="WrapWholeWords" Text="{x:Bind ViewModel.BlueprintPath, Mode=OneWay}"/>
32
<TextBlock Grid.Column="1" Grid.Row="4" IsTextSelectionEnabled="True" TextWrapping="WrapWholeWords" Text="{x:Bind ViewModel.IsBlueprintDestructible, Mode=OneWay}"/>
33
<TextBlock Grid.Column="1" Grid.Row="5" IsTextSelectionEnabled="True" TextWrapping="WrapWholeWords" Text="{x:Bind ViewModel.IsBlueprintEditable, Mode=OneWay}"/>
34
<Button Grid.Column="2" Grid.RowSpan="6" HorizontalAlignment="Right" VerticalAlignment="Top" Command="{x:Bind ViewModel.GoToEditorPageCommand}">
35
<StackPanel Orientation="Horizontal" Spacing="20">
36
<TextBlock Text="Open in editor"/>
37
<FontIcon Glyph=""/>
38
</StackPanel>
39
</Button>
25
40
</Grid>
41
<Expander Header="所需DLC列表" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
42
<ListView ItemsSource="{x:Bind ViewModel.DLCList, Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"/>
43
</Expander>
44
<Expander HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
45
<Expander.Header>
46
<Grid ColumnDefinitions="*, Auto, Auto" ColumnSpacing="20">
47
<TextBlock Text="蓝图网格" HorizontalAlignment="Left"/>
48
<TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TotalGridNumber, Mode=OneWay}"/>
49
<TextBlock Grid.Column="2" Text="{x:Bind ViewModel.TotalCubeNumber, Mode=OneWay}"/>
50
</Grid>
51
</Expander.Header>
52
<ListView ItemsSource="{x:Bind ViewModel.CubeGridList, Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
53
<ListView.ItemTemplate>
54
<DataTemplate x:DataType="model:CubeGridInfo">
55
<Grid HorizontalAlignment="Stretch">
56
<Grid.ColumnDefinitions>
57
<ColumnDefinition Width="*"/>
58
<ColumnDefinition Width="Auto" MinWidth="100"/>
59
</Grid.ColumnDefinitions>
60
<TextBlock Text="{x:Bind GridName}" HorizontalAlignment="Left"/>
61
<TextBlock Grid.Column="1" Text="{x:Bind CubeInGridCount}" HorizontalAlignment="Left"/>
62
</Grid>
63
</DataTemplate>
64
</ListView.ItemTemplate>
65
</ListView>
66
</Expander>
26
67
</StackPanel>
27
68
</ScrollView>
28
69
</Grid>