|
@@ -23,7 +23,6 @@ namespace ShakerManger.ViewModel
|
|
|
|
|
|
public ShakersViewModel()
|
|
|
{
|
|
|
-
|
|
|
}
|
|
|
|
|
|
public LayoutViewModel Layout
|
|
@@ -36,11 +35,17 @@ namespace ShakerManger.ViewModel
|
|
|
{
|
|
|
if (value.ColumnCount == 1 && value.RowCount == 1)
|
|
|
{
|
|
|
- LayoutShakers[0].IsMax = true;
|
|
|
+ for(int i=0;i<LayoutShakers.Count;i++)
|
|
|
+ {
|
|
|
+ LayoutShakers[i].IsMax = i==0;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LayoutShakers[0].IsMax = false;
|
|
|
+ for (int i = 0; i < LayoutShakers.Count; i++)
|
|
|
+ {
|
|
|
+ LayoutShakers[i].IsMax = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -79,38 +84,7 @@ namespace ShakerManger.ViewModel
|
|
|
MainWindowViewModel.Default.LogManger.Shakers.Add(new KeyValuePair<string, string>(x.Description, x.Id));
|
|
|
MainWindowViewModel.Default.WarnManger.Shakers.Add(new KeyValuePair<string, string>(x.Description, x.Id));
|
|
|
Shakers.Add(new ShakerControlViewModel(x));
|
|
|
- Shakers[^1].PropertyChanged += (sender, args) =>
|
|
|
- {
|
|
|
- if (sender is ShakerControlViewModel vm && args.PropertyName == nameof(ShakerControlViewModel.SelectedInfo))
|
|
|
- {
|
|
|
- int index = -1;
|
|
|
- for (int i = 0; i < LayoutShakers.Count; i++)
|
|
|
- {
|
|
|
- if (LayoutShakers[i].Name == vm.Name)
|
|
|
- {
|
|
|
- index = i;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (index == -1) return;
|
|
|
- var shaker = Shakers[vm.SelectedInfo.ShakerIndex];
|
|
|
- var tempshaker = LayoutShakers[index];
|
|
|
- int srcindex = -1;
|
|
|
- for (int i = 0; i < LayoutShakers.Count; i++)
|
|
|
- {
|
|
|
- if (LayoutShakers[i].Name == shaker.Name)
|
|
|
- {
|
|
|
- srcindex = i;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- LayoutShakers[index] = shaker;
|
|
|
- if (srcindex >= 0)
|
|
|
- {
|
|
|
- LayoutShakers[srcindex] = tempshaker;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
+
|
|
|
LayoutShakers.Add(Shakers[^1]);
|
|
|
});
|
|
|
MainWindowViewModel.Default.SystemConfig.ShakerPage.CurrentShaker = MainWindowViewModel.Default.Shakers.Shakers.First();
|
|
@@ -123,7 +97,7 @@ namespace ShakerManger.ViewModel
|
|
|
{
|
|
|
if(parameter.Parameter is ShakerControlViewModel shaker)
|
|
|
{
|
|
|
- var tempshaker = Shakers.First(x => x.Name == shaker.Name);
|
|
|
+ var tempshaker = Shakers.First(x => x.Model.Id == shaker.Model.Id);
|
|
|
if(tempshaker.IsMax)
|
|
|
{
|
|
|
LayoutShakers.Clear();
|
|
@@ -178,10 +152,92 @@ namespace ShakerManger.ViewModel
|
|
|
LayoutShakers.Add(item);
|
|
|
}
|
|
|
}
|
|
|
+ public ICommand SelectShakerCommand => new DelegateCommand<ExCommandParameter>(SelectShaker);
|
|
|
+ private void SelectShaker(ExCommandParameter parameter)
|
|
|
+ {
|
|
|
+ if (parameter.Parameter is ShakerControlViewModel shaker)
|
|
|
+ {
|
|
|
+ ShakerSelectInfos.Clear();
|
|
|
+ for (int i = 0; i < MainWindowViewModel.Default.Shakers.Shakers.Count; i++)
|
|
|
+ {
|
|
|
+ var model = MainWindowViewModel.Default.Shakers.Shakers[i].Model;
|
|
|
+
|
|
|
+ ShakerSelectInfos.Add(new ShakerSelectInfoViewModel(i,model.Id)
|
|
|
+ {
|
|
|
+ Name = model.Description,
|
|
|
+ IsEnble = model.Id != shaker.Model.Id,
|
|
|
+ });
|
|
|
+ if (!ShakerSelectInfos[^1].IsEnble)
|
|
|
+ {
|
|
|
+ SelectedInfo = ShakerSelectInfos[^1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SelectedIsOpen = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool SelectedIsOpen { get => selectedIsOpen; set => UpdateProperty(ref selectedIsOpen, value); }
|
|
|
+
|
|
|
+ private bool selectedIsOpen = false;
|
|
|
+
|
|
|
+ private ShakerSelectInfoViewModel? selectedInfo = null;
|
|
|
+ public ShakerSelectInfoViewModel? SelectedInfo
|
|
|
+ {
|
|
|
+ get => selectedInfo;
|
|
|
+ set
|
|
|
+ {
|
|
|
+ if(selectedInfo ==null)
|
|
|
+ {
|
|
|
+ UpdateProperty(ref selectedInfo, value);
|
|
|
+ SelectedIsOpen = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(value ==null)
|
|
|
+ {
|
|
|
+ UpdateProperty(ref selectedInfo, value);
|
|
|
+ SelectedIsOpen = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (SelectedIsOpen)
|
|
|
+ {
|
|
|
+
|
|
|
+ int index = -1;
|
|
|
+ for (int i = 0; i < LayoutShakers.Count; i++)
|
|
|
+ {
|
|
|
+ if (LayoutShakers[i].Model.Id == value.Id)
|
|
|
+ {
|
|
|
+ index = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (index == -1) return;
|
|
|
+ var shaker = Shakers[selectedInfo.ShakerIndex];
|
|
|
+ var tempshaker = LayoutShakers[index];
|
|
|
+ int srcindex = -1;
|
|
|
+ for (int i = 0; i < LayoutShakers.Count; i++)
|
|
|
+ {
|
|
|
+ if (LayoutShakers[i].Name == shaker.Name)
|
|
|
+ {
|
|
|
+ srcindex = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LayoutShakers[index] = shaker;
|
|
|
+ if (srcindex >= 0)
|
|
|
+ {
|
|
|
+ LayoutShakers[srcindex] = tempshaker;
|
|
|
+ }
|
|
|
+ UpdateProperty(ref selectedInfo, value);
|
|
|
+ SelectedIsOpen = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
public bool IsSelected { get; set; }
|
|
|
public Data.MainPageType MainPageType => Data.MainPageType.ShakerManger;
|
|
|
+
|
|
|
public string IconPath { get; } = (string)App.Current.FindResource("ShakerIcon");
|
|
|
public override Type View { get; } = (typeof(View.ShakersView));
|
|
|
+ public ObservableCollection<ShakerSelectInfoViewModel> ShakerSelectInfos { get; } = new ObservableCollection<ShakerSelectInfoViewModel>();
|
|
|
/// <summary>
|
|
|
/// 布局用,根据布局的变化会自动变化
|
|
|
/// </summary>
|
|
@@ -192,10 +248,15 @@ namespace ShakerManger.ViewModel
|
|
|
}
|
|
|
internal class ShakerSelectInfoViewModel : Shaker.ViewModel.ViewModelBase<Shaker.Model.ModelBase>
|
|
|
{
|
|
|
- public ShakerSelectInfoViewModel(int index) => ShakerIndex = index;
|
|
|
+ public ShakerSelectInfoViewModel(int index, string id)
|
|
|
+ {
|
|
|
+ ShakerIndex = index;
|
|
|
+ Id = id;
|
|
|
+ }
|
|
|
private bool isEnble = true;
|
|
|
private string name = string.Empty;
|
|
|
|
|
|
+ public string Id { get; }
|
|
|
public int ShakerIndex { get; }
|
|
|
public bool IsEnble { get => isEnble; set => UpdateProperty(ref isEnble, value); }
|
|
|
public string Name { get => name; set => UpdateProperty(ref name, value); }
|