|
|
@@ -2,6 +2,7 @@
|
|
|
using System.Collections.ObjectModel;
|
|
|
using System.Windows.Controls;
|
|
|
using System.Windows.Input;
|
|
|
+using System.Windows.Media;
|
|
|
using YSAI.Langs;
|
|
|
using YSAI.Mvvm;
|
|
|
using YSAI.Tool.Core.aboutUs;
|
|
|
@@ -28,11 +29,11 @@ namespace YSAI.Tool
|
|
|
/// <summary>
|
|
|
/// 图标
|
|
|
/// </summary>
|
|
|
- //public ImageSource Icon
|
|
|
- //{
|
|
|
- // get => GetProperty(() => Icon);
|
|
|
- // set => SetProperty(() => Icon, value);
|
|
|
- //}
|
|
|
+ public ImageSource Icon
|
|
|
+ {
|
|
|
+ get => GetProperty(() => Icon);
|
|
|
+ set => SetProperty(() => Icon, value);
|
|
|
+ }
|
|
|
/// <summary>
|
|
|
/// 标题
|
|
|
/// </summary>
|
|
|
@@ -60,11 +61,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "AboutUsTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand CanTool
|
|
|
@@ -72,11 +71,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "CanTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand MqttClientTool
|
|
|
@@ -84,11 +81,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "MqttClientTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand MqttServiceTool
|
|
|
@@ -96,11 +91,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "MqttServiceTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand MqttWebSocketServiceTool
|
|
|
@@ -108,11 +101,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "MqttWebSocketServiceTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand OpcDaHttpClientTool
|
|
|
@@ -120,11 +111,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "OpcDaHttpClientTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand OpcUaClientTool
|
|
|
@@ -132,11 +121,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "OpcUaClientTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand OpcUaServiceTool
|
|
|
@@ -144,11 +131,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "OpcUaServiceTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand SerialPortTool
|
|
|
@@ -156,11 +141,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "SerialPortTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand SocketTcpClientTool
|
|
|
@@ -168,11 +151,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "SocketTcpClientTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand SocketTcpServerTool
|
|
|
@@ -180,11 +161,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "SocketTcpServerTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand SocketUdpTool
|
|
|
@@ -192,11 +171,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "SocketUdpTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
public ICommand SvgTool
|
|
|
@@ -204,11 +181,9 @@ namespace YSAI.Tool
|
|
|
get => new CommandX(() =>
|
|
|
{
|
|
|
string name = "SvgTool";
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = name,
|
|
|
- UserControl = UserControls[name]
|
|
|
- });
|
|
|
+ Source source = Sources[name];
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
});
|
|
|
}
|
|
|
#endregion 控件
|
|
|
@@ -217,41 +192,105 @@ namespace YSAI.Tool
|
|
|
{
|
|
|
//设置初始语言
|
|
|
LangsHelper.SetLangs(LangsHelper.GetLangs());
|
|
|
- //添加控件集合
|
|
|
- UserControls.AddOrUpdate("CanTool", new CanTool(), (k, v) => new CanTool());
|
|
|
- UserControls.AddOrUpdate("MqttClientTool", new MqttClientTool(), (k, v) => new MqttClientTool());
|
|
|
- UserControls.AddOrUpdate("MqttServiceTool", new MqttServiceTool(), (k, v) => new MqttServiceTool());
|
|
|
- UserControls.AddOrUpdate("MqttWebSocketServiceTool", new MqttWebSocketServiceTool(), (k, v) => new MqttWebSocketServiceTool());
|
|
|
- UserControls.AddOrUpdate("OpcDaHttpClientTool", new OpcDaHttpClientTool(), (k, v) => new OpcDaHttpClientTool());
|
|
|
- UserControls.AddOrUpdate("OpcUaClientTool", new OpcUaClientTool(), (k, v) => new OpcUaClientTool());
|
|
|
- UserControls.AddOrUpdate("OpcUaServiceTool", new OpcUaServiceTool(), (k, v) => new OpcUaServiceTool());
|
|
|
- UserControls.AddOrUpdate("SerialPortTool", new SerialPortTool(), (k, v) => new SerialPortTool());
|
|
|
- UserControls.AddOrUpdate("SocketTcpClientTool", new SocketTcpClientTool(), (k, v) => new SocketTcpClientTool());
|
|
|
- UserControls.AddOrUpdate("SocketTcpServerTool", new SocketTcpServerTool(), (k, v) => new SocketTcpServerTool());
|
|
|
- UserControls.AddOrUpdate("SocketUdpTool", new SocketUdpTool(), (k, v) => new SocketUdpTool());
|
|
|
- UserControls.AddOrUpdate("SvgTool", new SvgTool(), (k, v) => new SvgTool());
|
|
|
- UserControls.AddOrUpdate("AboutUsTool", new AboutUsTool(), (k, v) => new AboutUsTool());
|
|
|
|
|
|
if (TabControlItemsSource == null)
|
|
|
{
|
|
|
TabControlItemsSource = new ObservableCollection<Source>();
|
|
|
}
|
|
|
|
|
|
- TabControlItemsSource.Add(new Source
|
|
|
- {
|
|
|
- Title = "AboutUsTool",
|
|
|
- UserControl = UserControls["AboutUsTool"]
|
|
|
- });
|
|
|
- }
|
|
|
|
|
|
+ string name = "CanTool";
|
|
|
+ UserControl control = new CanTool();
|
|
|
+ Source source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "MqttClientTool";
|
|
|
+ control = new MqttClientTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "MqttServiceTool";
|
|
|
+ control = new MqttServiceTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "MqttWebSocketServiceTool";
|
|
|
+ control = new MqttWebSocketServiceTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "OpcDaHttpClientTool";
|
|
|
+ control = new OpcDaHttpClientTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "OpcUaClientTool";
|
|
|
+ control = new OpcUaClientTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "OpcUaServiceTool";
|
|
|
+ control = new OpcUaServiceTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "SerialPortTool";
|
|
|
+ control = new SerialPortTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "SocketTcpClientTool";
|
|
|
+ control = new SocketTcpClientTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ name = "SocketTcpServerTool";
|
|
|
+ control = new SocketTcpServerTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
|
|
|
+ name = "SocketUdpTool";
|
|
|
+ control = new SocketUdpTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+
|
|
|
+ name = "SvgTool";
|
|
|
+ control = new SvgTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+
|
|
|
+ name = "AboutUsTool";
|
|
|
+ control = new AboutUsTool();
|
|
|
+ source = new Source { Title = name, UserControl = control };
|
|
|
+ Sources.AddOrUpdate(name, source, (k, v) => source);
|
|
|
+ UserControls.AddOrUpdate(name, control, (k, v) => control);
|
|
|
+
|
|
|
+ if (!TabControlItemsSource.Contains(source)) { TabControlItemsSource.Add(source); }
|
|
|
+ TabControlSelectedItem = source;
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 控件集合
|
|
|
+ /// 控件集合,提前加载
|
|
|
/// </summary>
|
|
|
private ConcurrentDictionary<string, UserControl> UserControls = new ConcurrentDictionary<string, UserControl>();
|
|
|
-
|
|
|
-
|
|
|
+ /// <summary>
|
|
|
+ /// 数据源集合
|
|
|
+ /// </summary>
|
|
|
+ private ConcurrentDictionary<string, Source> Sources = new ConcurrentDictionary<string, Source>();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 选项卡控件项源
|
|
|
@@ -261,5 +300,13 @@ namespace YSAI.Tool
|
|
|
get => GetProperty(() => TabControlItemsSource);
|
|
|
set => SetProperty(() => TabControlItemsSource, value);
|
|
|
}
|
|
|
+ /// <summary>
|
|
|
+ /// 选中的项
|
|
|
+ /// </summary>
|
|
|
+ public Source TabControlSelectedItem
|
|
|
+ {
|
|
|
+ get => GetProperty(() => TabControlSelectedItem);
|
|
|
+ set => SetProperty(() => TabControlSelectedItem, value);
|
|
|
+ }
|
|
|
}
|
|
|
}
|