@@ -2,6 +2,7 @@ | |||||
using BPASmartClient.SCADAControl; | using BPASmartClient.SCADAControl; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.IO; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
@@ -32,7 +33,27 @@ namespace BPASmartClient.SCADAControl.CustomerControls | |||||
Width = 80; | Width = 80; | ||||
Height = 80; | Height = 80; | ||||
} | } | ||||
/// <summary> | |||||
/// 启动路径 | |||||
/// </summary> | |||||
public string ImageStartPath | |||||
{ | |||||
get { return (string)GetValue(StartPathProperty); } | |||||
set { SetValue(StartPathProperty, value); } | |||||
} | |||||
public static readonly DependencyProperty StartPathProperty = | |||||
DependencyProperty.Register("ImageStartPath", typeof(string), typeof(TheImage), new PropertyMetadata(string.Empty,new PropertyChangedCallback(OnPropertyChanged))); | |||||
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) | |||||
{ | |||||
(d as TheImage)?.Refresh(); | |||||
} | |||||
private void Refresh() | |||||
{ | |||||
if (!string.IsNullOrEmpty(ImageStartPath) && File.Exists(ImageStartPath)) | |||||
{ | |||||
Source = new BitmapImage(new Uri(ImageStartPath)); | |||||
} | |||||
} | |||||
public string ControlType => "控件"; | public string ControlType => "控件"; | ||||
private bool isExecuteState; | private bool isExecuteState; | ||||
@@ -51,6 +72,16 @@ namespace BPASmartClient.SCADAControl.CustomerControls | |||||
public void Register() | public void Register() | ||||
{ | { | ||||
if (!string.IsNullOrEmpty(ImageStartPath)) | |||||
{ | |||||
string path = $"{System.AppDomain.CurrentDomain.BaseDirectory}Images\\{System.IO.Path.GetFileName(ImageStartPath)}"; | |||||
if (File.Exists(path)) | |||||
{ | |||||
ImageStartPath = path; | |||||
Source = new BitmapImage(new Uri(ImageStartPath)); | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -231,7 +231,7 @@ | |||||
<mypro:PropertyDefinition DisplayName="宽度" Category="基本属性" DisplayOrder="3" Name="Width"/> | <mypro:PropertyDefinition DisplayName="宽度" Category="基本属性" DisplayOrder="3" Name="Width"/> | ||||
<mypro:PropertyDefinition DisplayName="高度" Category="基本属性" DisplayOrder="3" Name="Height"/> | <mypro:PropertyDefinition DisplayName="高度" Category="基本属性" DisplayOrder="3" Name="Height"/> | ||||
<mypro:PropertyDefinition DisplayName="勾选状态" Category="基本属性" DisplayOrder="3" Name="BindingIsChecked"/> | <mypro:PropertyDefinition DisplayName="勾选状态" Category="基本属性" DisplayOrder="3" Name="BindingIsChecked"/> | ||||
<mypro:PropertyDefinition DisplayName="路径" Category="基本属性" DisplayOrder="3" Name="Source" /> | |||||
<mypro:PropertyDefinition DisplayName="图片路径" Category="基本属性" DisplayOrder="3" Name="ImageStartPath" /> | |||||
<mypro:PropertyDefinition DisplayName="FontSize" Category="基本属性" DisplayOrder="4" Name="FontSize"/> | <mypro:PropertyDefinition DisplayName="FontSize" Category="基本属性" DisplayOrder="4" Name="FontSize"/> | ||||
<mypro:PropertyDefinition DisplayName="字体" Category="基本属性" DisplayOrder="4" Name="FontFamily"/> | <mypro:PropertyDefinition DisplayName="字体" Category="基本属性" DisplayOrder="4" Name="FontFamily"/> | ||||
<mypro:PropertyDefinition DisplayName="字体样式" Category="基本属性" DisplayOrder="4" Name="FontWeight"/> | <mypro:PropertyDefinition DisplayName="字体样式" Category="基本属性" DisplayOrder="4" Name="FontWeight"/> | ||||
@@ -313,7 +313,7 @@ | |||||
</mypro:EditorTemplateDefinition.EditingTemplate> | </mypro:EditorTemplateDefinition.EditingTemplate> | ||||
</mypro:EditorTemplateDefinition> | </mypro:EditorTemplateDefinition> | ||||
<mypro:EditorTemplateDefinition TargetProperties="Source"> | |||||
<mypro:EditorTemplateDefinition TargetProperties="ImageStartPath"> | |||||
<mypro:EditorTemplateDefinition.EditingTemplate> | <mypro:EditorTemplateDefinition.EditingTemplate> | ||||
<DataTemplate> | <DataTemplate> | ||||
<Grid> | <Grid> | ||||
@@ -46,6 +46,7 @@ namespace BeDesignerSCADA.Controls | |||||
InitializeComponent(); | InitializeComponent(); | ||||
EditorHelper.Register<BindingExpression, BindingConvertor>(); | EditorHelper.Register<BindingExpression, BindingConvertor>(); | ||||
Path = _Path; | Path = _Path; | ||||
viewModel.LayoutsPath=Path; | |||||
this.DataContext = viewModel; | this.DataContext = viewModel; | ||||
viewModel.Loaded(cav, runCanvas); | viewModel.Loaded(cav, runCanvas); | ||||
//控件加载 | //控件加载 | ||||
@@ -18,6 +18,7 @@ using System.Collections.Concurrent; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.ObjectModel; | using System.Collections.ObjectModel; | ||||
using System.ComponentModel; | using System.ComponentModel; | ||||
using System.IO; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Reflection; | using System.Reflection; | ||||
using System.Text; | using System.Text; | ||||
@@ -47,7 +48,10 @@ namespace BeDesignerSCADA.ViewModel | |||||
/// 变量管理器地址 | /// 变量管理器地址 | ||||
/// </summary> | /// </summary> | ||||
public string VariablePath = string.Empty; | public string VariablePath = string.Empty; | ||||
/// <summary> | |||||
/// 布局路径 | |||||
/// </summary> | |||||
public string LayoutsPath = string.Empty; | |||||
/// <summary> | /// <summary> | ||||
/// 是否正在运行状态 | /// 是否正在运行状态 | ||||
/// </summary> | /// </summary> | ||||
@@ -262,8 +266,8 @@ namespace BeDesignerSCADA.ViewModel | |||||
object selectpro = _property.SelectedProperty; | object selectpro = _property.SelectedProperty; | ||||
object selectControl= _property.SelectedObject;//对象 | |||||
string selectProName= _property.SelectedProperty.ToString(); | |||||
object selectControl = _property.SelectedObject;//对象 | |||||
string selectProName = _property.SelectedProperty.ToString(); | |||||
//选中属性 | //选中属性 | ||||
DependencyProperty dependencyProperty = PropertyHelper.GetDependencyProperties(selectControl)?.ToList().Find(x => x.Name == selectProName); | DependencyProperty dependencyProperty = PropertyHelper.GetDependencyProperties(selectControl)?.ToList().Find(x => x.Name == selectProName); | ||||
@@ -272,11 +276,11 @@ namespace BeDesignerSCADA.ViewModel | |||||
string _binding = PropertyBindingWindow.ShowEdit(dependencyProperty, (selectControl as FrameworkElement), VariablePath); | string _binding = PropertyBindingWindow.ShowEdit(dependencyProperty, (selectControl as FrameworkElement), VariablePath); | ||||
if (!string.IsNullOrEmpty(_binding)) | if (!string.IsNullOrEmpty(_binding)) | ||||
{ | { | ||||
Binding bindingText = new Binding() | |||||
{ | |||||
Binding bindingText = new Binding() | |||||
{ | |||||
Mode = BindingMode.TwoWay, | Mode = BindingMode.TwoWay, | ||||
Converter= new JTokenToBoolConverter(), | |||||
RelativeSource =new RelativeSource { Mode=RelativeSourceMode.Self}, | |||||
Converter = new JTokenToBoolConverter(), | |||||
RelativeSource = new RelativeSource { Mode = RelativeSourceMode.Self }, | |||||
Path = new PropertyPath(_binding) | Path = new PropertyPath(_binding) | ||||
}; | }; | ||||
(selectControl as FrameworkElement).SetBinding(dependencyProperty, bindingText); | (selectControl as FrameworkElement).SetBinding(dependencyProperty, bindingText); | ||||
@@ -324,6 +328,31 @@ namespace BeDesignerSCADA.ViewModel | |||||
if (ofd.ShowDialog() == true) | if (ofd.ShowDialog() == true) | ||||
{ | { | ||||
((Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem)obj).Value = ofd.FileName; | ((Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem)obj).Value = ofd.FileName; | ||||
if (!string.IsNullOrEmpty(LayoutsPath)) | |||||
{ | |||||
string qz = Path.GetDirectoryName(LayoutsPath); | |||||
if (!string.IsNullOrEmpty(qz) && qz.Contains("Layouts")) | |||||
{ | |||||
string path = ofd.FileName; | |||||
string path2 = $"{qz.Replace("Layouts", "Images")}/{ofd.SafeFileName}"; | |||||
FileInfo fi1 = new FileInfo(path); | |||||
FileInfo fi2 = new FileInfo(path2); | |||||
try | |||||
{ | |||||
if (File.Exists(path2)) | |||||
{ | |||||
fi2.Delete(); | |||||
} | |||||
fi1.CopyTo(path2); | |||||
} | |||||
catch (IOException ioex) | |||||
{ | |||||
Console.WriteLine(ioex.Message); | |||||
} | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||