Browse Source

调整datagrid

样式分支
fyf 2 years ago
parent
commit
f435fb9e1d
7 changed files with 118 additions and 28 deletions
  1. +11
    -1
      BPASmartClient.SCADAControl/CustomerControls/TheAPI.xaml.cs
  2. +40
    -6
      BPASmartClient.SCADAControl/CustomerControls/TheDataGrid.xaml.cs
  3. +24
    -1
      BPASmartClient.SCADAControl/CustomerControls/TheMQTT.xaml.cs
  4. +24
    -1
      BPASmartClient.SCADAControl/CustomerControls/TheRedis.xaml.cs
  5. +12
    -13
      BeDesignerSCADA/Controls/CanvasPanel.cs
  6. +6
    -5
      BeDesignerSCADA/Controls/MainCanvasPanel.xaml
  7. +1
    -1
      BeDesignerSCADA/ViewModel/MainViewModelNew.cs

+ 11
- 1
BPASmartClient.SCADAControl/CustomerControls/TheAPI.xaml.cs View File

@@ -166,6 +166,9 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public void Dispose() public void Dispose()
{ {
timer.Stop(); timer.Stop();
Direction=0;
FDataSouce = "";
if (IsRun) IsRun = false;
} }


#region 属性 #region 属性
@@ -275,7 +278,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
{ {
try try
{ {
if (!string.IsNullOrEmpty(FDataSouce))
//if (!string.IsNullOrEmpty(FDataSouce))
{ {
GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce }); GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce });
Class_DataBus.GetInstance().Dic_APIData[this.Name] = GenerateData; Class_DataBus.GetInstance().Dic_APIData[this.Name] = GenerateData;
@@ -311,6 +314,13 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public void IsRunRefresh() public void IsRunRefresh()
{ {
//测试运行 //测试运行
if (IsRun)
IsExecuteState = true;
else
{
IsExecuteState = false;
Dispose();
}
} }
[Category("数据绑定")] [Category("数据绑定")]
public string GenerateData public string GenerateData


+ 40
- 6
BPASmartClient.SCADAControl/CustomerControls/TheDataGrid.xaml.cs View File

@@ -28,7 +28,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
/// <summary> /// <summary>
/// TheDataGrid.xaml 的交互逻辑 /// TheDataGrid.xaml 的交互逻辑
/// </summary> /// </summary>
public partial class TheDataGrid :DataGrid, IExecutable
public partial class TheDataGrid :DataGrid, IExecutable, IDisposable
{ {
public TheDataGrid() public TheDataGrid()
{ {
@@ -36,8 +36,8 @@ namespace BPASmartClient.SCADAControl.CustomerControls
//ResourceDictionary languageResDic = new ResourceDictionary(); //ResourceDictionary languageResDic = new ResourceDictionary();
//languageResDic.Source = new Uri(@"/BPASmartClient.SCADAControl;component/Themes/Generic.xaml", UriKind.RelativeOrAbsolute); //languageResDic.Source = new Uri(@"/BPASmartClient.SCADAControl;component/Themes/Generic.xaml", UriKind.RelativeOrAbsolute);
//this.Resources.MergedDictionaries.Add(languageResDic); //this.Resources.MergedDictionaries.Add(languageResDic);
MinWidth = 100;
MinHeight = 100;
//MinWidth = 100;
//MinHeight = 100;
Width = 100; Width = 100;
Height = 100; Height = 100;
this.Loaded += TheDataGrid_Loaded; ; this.Loaded += TheDataGrid_Loaded; ;
@@ -55,6 +55,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
try try
{ {
TabItemsStr = JsonConvert.SerializeObject(TabItems); TabItemsStr = JsonConvert.SerializeObject(TabItems);
GenerateDataRefresh();
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -96,6 +97,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls


} }
} }
Style = null;


if (DataSouceType == DataTypeEnum.API接口) if (DataSouceType == DataTypeEnum.API接口)
{ {
@@ -105,6 +107,14 @@ namespace BPASmartClient.SCADAControl.CustomerControls
} }
} }


public void Dispose()
{
timer.Stop();
FDataSouce = "";
if (IsRun) IsRun = false;
GenerateDataRefresh();
}

private void Timer_Tick(object? sender,EventArgs e) private void Timer_Tick(object? sender,EventArgs e)
{ {
if (!string.IsNullOrEmpty(DataSouceInformation)) if (!string.IsNullOrEmpty(DataSouceInformation))
@@ -172,7 +182,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
{ {
try try
{ {
if (!string.IsNullOrEmpty(FDataSouce))
//if (!string.IsNullOrEmpty(FDataSouce))
{ {
GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce }); GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce });
if (PropertyChange != null) if (PropertyChange != null)
@@ -196,6 +206,26 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public static readonly DependencyProperty CodeProperty = public static readonly DependencyProperty CodeProperty =
DependencyProperty.Register("Code",typeof(string),typeof(TheDataGrid),new PropertyMetadata(_code)); DependencyProperty.Register("Code",typeof(string),typeof(TheDataGrid),new PropertyMetadata(_code));
[Category("数据绑定")] [Category("数据绑定")]
public bool IsRun
{
get { return (bool)GetValue(RunProperty); }
set { SetValue(RunProperty, value); }
}
public static readonly DependencyProperty RunProperty =
DependencyProperty.Register("IsRun", typeof(bool), typeof(TheDataGrid), new PropertyMetadata(false, new PropertyChangedCallback(onIsRunChanged)));
private static void onIsRunChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) => (d as TheDataGrid)?.IsRunRefresh();
public void IsRunRefresh()
{
//测试运行
if (IsRun)
IsExecuteState = true;
else
{
IsExecuteState = false;
Dispose();
}
}
[Category("数据绑定")]
public string GenerateData public string GenerateData
{ {
get { return (string)GetValue(GenerateDataProperty); } get { return (string)GetValue(GenerateDataProperty); }
@@ -210,7 +240,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
{ {
try try
{ {
Dictionary<string, object> keys= JsonConvert.DeserializeObject<Dictionary<string, object>>(GenerateData);
Dictionary<string, object> keys = JsonConvert.DeserializeObject<Dictionary<string, object>>(GenerateData);
List<Dictionary<string, object>> obj2 = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(keys["data"].ToString()); List<Dictionary<string, object>> obj2 = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(keys["data"].ToString());
//ItemsString = JsonConvert.DeserializeObject<DataSouceModel>(GenerateData); //ItemsString = JsonConvert.DeserializeObject<DataSouceModel>(GenerateData);
// 运行时进行项目绑定 // 运行时进行项目绑定
@@ -219,7 +249,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
this.CanUserDeleteRows = false; this.CanUserDeleteRows = false;
this.RowHeaderWidth = 0; this.RowHeaderWidth = 0;
this.GridLinesVisibility = DataGridGridLinesVisibility.None; this.GridLinesVisibility = DataGridGridLinesVisibility.None;
//this.BorderThickness = new Thickness(0);
this.BorderThickness = new Thickness(0);
this.ItemsSource = ListToDataTable(obj2).DefaultView; this.ItemsSource = ListToDataTable(obj2).DefaultView;
} }
catch (Exception ex) catch (Exception ex)
@@ -227,6 +257,10 @@ namespace BPASmartClient.SCADAControl.CustomerControls


} }
} }
else
{
this.ItemsSource = new DataTable().DefaultView;
}
} }




+ 24
- 1
BPASmartClient.SCADAControl/CustomerControls/TheMQTT.xaml.cs View File

@@ -185,6 +185,9 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public void Dispose() public void Dispose()
{ {
timer.Stop(); timer.Stop();
Direction = 0;
FDataSouce = "";
if (IsRun) IsRun = false;
} }


#region 属性 #region 属性
@@ -308,7 +311,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
{ {
try try
{ {
if (!string.IsNullOrEmpty(FDataSouce))
//if (!string.IsNullOrEmpty(FDataSouce))
{ {
GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce }); GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce });


@@ -329,6 +332,26 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public static readonly DependencyProperty CodeProperty = public static readonly DependencyProperty CodeProperty =
DependencyProperty.Register("Code",typeof(string),typeof(TheMQTT),new PropertyMetadata(_code)); DependencyProperty.Register("Code",typeof(string),typeof(TheMQTT),new PropertyMetadata(_code));
[Category("数据绑定")] [Category("数据绑定")]
public bool IsRun
{
get { return (bool)GetValue(RunProperty); }
set { SetValue(RunProperty, value); }
}
public static readonly DependencyProperty RunProperty =
DependencyProperty.Register("IsRun", typeof(bool), typeof(TheMQTT), new PropertyMetadata(false, new PropertyChangedCallback(onIsRunChanged)));
private static void onIsRunChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) => (d as TheMQTT)?.IsRunRefresh();
public void IsRunRefresh()
{
//测试运行
if (IsRun)
IsExecuteState = true;
else
{
IsExecuteState = false;
Dispose();
}
}
[Category("数据绑定")]
public string GenerateData public string GenerateData
{ {
get { return (string)GetValue(GenerateDataProperty); } get { return (string)GetValue(GenerateDataProperty); }


+ 24
- 1
BPASmartClient.SCADAControl/CustomerControls/TheRedis.xaml.cs View File

@@ -200,6 +200,9 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public void Dispose() public void Dispose()
{ {
timer.Stop(); timer.Stop();
Direction = 0;
FDataSouce = "";
if (IsRun) IsRun = false;
} }


#region 属性 #region 属性
@@ -301,7 +304,7 @@ namespace BPASmartClient.SCADAControl.CustomerControls
{ {
try try
{ {
if (!string.IsNullOrEmpty(FDataSouce))
//if (!string.IsNullOrEmpty(FDataSouce))
{ {
GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce }); GenerateData = (string)CSharpConfig.GetInstance().RunCSharp(Code,new object[] { FDataSouce });
@@ -322,6 +325,26 @@ namespace BPASmartClient.SCADAControl.CustomerControls
public static readonly DependencyProperty CodeProperty = public static readonly DependencyProperty CodeProperty =
DependencyProperty.Register("Code",typeof(string),typeof(TheRedis),new PropertyMetadata(_code)); DependencyProperty.Register("Code",typeof(string),typeof(TheRedis),new PropertyMetadata(_code));
[Category("数据绑定")] [Category("数据绑定")]
public bool IsRun
{
get { return (bool)GetValue(RunProperty); }
set { SetValue(RunProperty, value); }
}
public static readonly DependencyProperty RunProperty =
DependencyProperty.Register("IsRun", typeof(bool), typeof(TheRedis), new PropertyMetadata(false, new PropertyChangedCallback(onIsRunChanged)));
private static void onIsRunChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) => (d as TheRedis)?.IsRunRefresh();
public void IsRunRefresh()
{
//测试运行
if (IsRun)
IsExecuteState = true;
else
{
IsExecuteState = false;
Dispose();
}
}
[Category("数据绑定")]
public string GenerateData public string GenerateData
{ {
get { return (string)GetValue(GenerateDataProperty); } get { return (string)GetValue(GenerateDataProperty); }


+ 12
- 13
BeDesignerSCADA/Controls/CanvasPanel.cs View File

@@ -929,7 +929,7 @@ namespace BeDesignerSCADA.Controls
// 排除非自定义的控件们 // 排除非自定义的控件们
if (!(item is IExecutable)) if (!(item is IExecutable))
continue; continue;
if(item is IDisposable) (item as IDisposable).Dispose();
var xml = XamlWriter.Save(item); var xml = XamlWriter.Save(item);
var ele = XamlReader.Parse(xml) as FrameworkElement; var ele = XamlReader.Parse(xml) as FrameworkElement;
elements.Add(ele); elements.Add(ele);
@@ -947,7 +947,10 @@ namespace BeDesignerSCADA.Controls


foreach (var item in Children) foreach (var item in Children)
{ {

// 排除非自定义的控件们
if (!(item is IExecutable))
continue;
if (item is IDisposable) (item as IDisposable).Dispose();
var xml = XamlWriter.Save(item); var xml = XamlWriter.Save(item);
sb.Append(xml + "\r\n"); sb.Append(xml + "\r\n");
} }
@@ -967,20 +970,16 @@ namespace BeDesignerSCADA.Controls
while (sr.Peek() > -1) while (sr.Peek() > -1)
{ {
string str = sr.ReadLine(); string str = sr.ReadLine();
//if (!str.Contains("NewConveyorBelt"))
try
{
var ele = XamlReader.Parse(str) as FrameworkElement;
Children.Add(ele);
}
catch (Exception ex)
{ {
try
{
var ele = XamlReader.Parse(str) as FrameworkElement;
Children.Add(ele);
}
catch (Exception ex)
{


}
} }

} }
} }




+ 6
- 5
BeDesignerSCADA/Controls/MainCanvasPanel.xaml View File

@@ -241,8 +241,11 @@
<mypro:PropertyDefinition DisplayName="接口参数" Category="数据绑定模块" DisplayOrder="2" Name="InterfaceParameters"/> <mypro:PropertyDefinition DisplayName="接口参数" Category="数据绑定模块" DisplayOrder="2" Name="InterfaceParameters"/>
<mypro:PropertyDefinition DisplayName="连接信息" Category="数据绑定模块" DisplayOrder="3" Name="DataSouceInformation"/> <mypro:PropertyDefinition DisplayName="连接信息" Category="数据绑定模块" DisplayOrder="3" Name="DataSouceInformation"/>
<mypro:PropertyDefinition DisplayName="设备解析变量" Category="数据绑定模块" DisplayOrder="4" Name="DeviceValuleName"/> <mypro:PropertyDefinition DisplayName="设备解析变量" Category="数据绑定模块" DisplayOrder="4" Name="DeviceValuleName"/>
<mypro:PropertyDefinition DisplayName="模拟运行" Category="数据绑定模块" DisplayOrder="4" Name="IsRun"/>
<mypro:PropertyDefinition DisplayName="数据源" Category="数据绑定模块" DisplayOrder="5" Name="FDataSouce"/> <mypro:PropertyDefinition DisplayName="数据源" Category="数据绑定模块" DisplayOrder="5" Name="FDataSouce"/>
<mypro:PropertyDefinition DisplayName="代码过滤脚本" Category="数据绑定模块" DisplayOrder="6" Name="Code"/> <mypro:PropertyDefinition DisplayName="代码过滤脚本" Category="数据绑定模块" DisplayOrder="6" Name="Code"/>

<mypro:PropertyDefinition DisplayName="数据结果" Category="数据绑定模块" DisplayOrder="7" Name="GenerateData"/> <mypro:PropertyDefinition DisplayName="数据结果" Category="数据绑定模块" DisplayOrder="7" Name="GenerateData"/>
<mypro:PropertyDefinition DisplayName="定时间隔" Category="数据绑定模块" DisplayOrder="8" Name="TimeCount"/> <mypro:PropertyDefinition DisplayName="定时间隔" Category="数据绑定模块" DisplayOrder="8" Name="TimeCount"/>


@@ -326,15 +329,13 @@
</mypro:EditorTemplateDefinition.EditingTemplate> </mypro:EditorTemplateDefinition.EditingTemplate>
</mypro:EditorTemplateDefinition> </mypro:EditorTemplateDefinition>


<!--<mypro:EditorTemplateDefinition TargetProperties="DeviceValuleName" >
<mypro:EditorTemplateDefinition TargetProperties="IsRun" >
<mypro:EditorTemplateDefinition.EditingTemplate> <mypro:EditorTemplateDefinition.EditingTemplate>
<DataTemplate> <DataTemplate>
<ComboBox Grid.Column="1" Height="25" Width="{Binding Width, ElementName=com}" Text="{Binding Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window},Path=DataContext.DevValueList}"
></ComboBox>
<CheckBox IsChecked="{Binding Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">定时业务</CheckBox>
</DataTemplate> </DataTemplate>
</mypro:EditorTemplateDefinition.EditingTemplate> </mypro:EditorTemplateDefinition.EditingTemplate>
</mypro:EditorTemplateDefinition>-->
</mypro:EditorTemplateDefinition>


<mypro:EditorTemplateDefinition TargetProperties="DeviceName" > <mypro:EditorTemplateDefinition TargetProperties="DeviceName" >
<mypro:EditorTemplateDefinition.EditingTemplate> <mypro:EditorTemplateDefinition.EditingTemplate>


+ 1
- 1
BeDesignerSCADA/ViewModel/MainViewModelNew.cs View File

@@ -37,7 +37,7 @@ namespace BeDesignerSCADA.ViewModel
{ {
IsRunning = !IsRunning; IsRunning = !IsRunning;
}); });
DevNameList = new ObservableCollection<string>() { "qqqq", "wewew" };
//DevNameList = new ObservableCollection<string>() { "qqqq", "wewew" };
//DataBusModel.GetInstance().RefreshTheVariableManagerAction += RefreshTheVariableManagerActionHader; //DataBusModel.GetInstance().RefreshTheVariableManagerAction += RefreshTheVariableManagerActionHader;
} }




Loading…
Cancel
Save