fe58578e65
- eliminati tutti gli Application.Msn.Register/NotifyColleagues e la classe Messenger. Ora tutto ciò che eseguivano è in funzioni/sub Friend chiamate tramite i riferimenti in Map.
501 lines
20 KiB
VB.net
501 lines
20 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class MachiningParameterExpanderVM
|
|
Inherits VMBase
|
|
|
|
Private WithEvents m_CurrOperation As MachiningTreeViewItem
|
|
Public Property CurrOpeartion As MachiningTreeViewItem
|
|
Get
|
|
Return m_CurrOperation
|
|
End Get
|
|
Set(value As MachiningTreeViewItem)
|
|
m_CurrOperation = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_CurrOperation_IsModified As Boolean
|
|
Public Property CurrOpeartion_IsModified As Boolean
|
|
Get
|
|
Return m_CurrOperation_IsModified
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_CurrOperation_IsModified = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_CurrOperation_ErrorOnOperation As Boolean
|
|
Public Property CurrOpeartion_ErrorOnOperation As Boolean
|
|
Get
|
|
Return m_CurrOperation_ErrorOnOperation
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_CurrOperation_ErrorOnOperation = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_UpdateMachiningBtn_Background As SolidColorBrush = Brushes.LightGray
|
|
Public ReadOnly Property UpdateMachiningBtn_Background As SolidColorBrush
|
|
Get
|
|
If m_CurrOperation_ErrorOnOperation Then
|
|
Return Brushes.Red
|
|
ElseIf m_CurrOperation_IsModified Then
|
|
Return Brushes.Gold
|
|
Else
|
|
Return Brushes.LightGray
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_bPreviewTool As Boolean = False
|
|
Private m_nPtEntId As Integer = GDB_ID.NULL
|
|
Public Property ViewTool As Boolean
|
|
Get
|
|
Return m_bPreviewTool
|
|
End Get
|
|
Set(value As Boolean)
|
|
If value Then
|
|
EgtPreparePreviewMachiningTool()
|
|
m_nPtEntId = EgtPreviewMachiningTool(GDB_ID.NULL, MCH_PTM.AFTER)
|
|
m_bPreviewTool = True
|
|
Else
|
|
EgtRemovePreviewMachiningTool()
|
|
m_bPreviewTool = False
|
|
End If
|
|
EgtDraw()
|
|
NotifyPropertyChanged("ViewTool")
|
|
End Set
|
|
End Property
|
|
|
|
Dim WoodDrillParamExpanderV As WoodDrillingParameterExpanderV
|
|
Dim WoodSawParamExpanderV As WoodSawingParameterExpanderV
|
|
Dim WoodMillParamExpanderV As WoodMillingParameterExpanderV
|
|
Dim BeamMillParamExpanderV As BeamMillingParameterExpanderV
|
|
Dim PocketParamExpanderV As PocketingParameterExpanderV
|
|
Dim MortiseParamExpanderV As MortisingParameterExpanderV
|
|
Dim ChiselParamExpanderV As ChiselingParameterExpanderV
|
|
Dim StoneSawParamExpanderV As StoneSawingParameterExpanderV
|
|
Dim StoneSawFinishParamExpanderV As StoneSawFinishingParameterExpanderV
|
|
Dim StoneSawRoughParamExpanderV As StoneSawRoughingParameterExpanderV
|
|
Dim StoneMillParamExpanderV As StoneMillingParameterExpanderV
|
|
Dim StoneDrillParamExpanderV As StoneDrillingParameterExpanderV
|
|
Dim WjParamExpanderV As WaterjettingParameterExpanderV
|
|
|
|
Private Sub Dummy()
|
|
|
|
End Sub
|
|
|
|
Public ReadOnly Property ParamExpanderPageV As ContentControl
|
|
Get
|
|
|
|
' !!! Inizializzo delegati con funzione vuota, per evitare problemi !!!
|
|
MachiningTreeViewItem.m_delRemoveMachining = AddressOf Dummy
|
|
MachiningTreeViewItem.m_delErrorOnMachining = AddressOf Dummy
|
|
MachiningTreeViewItem.m_delIsEnabledBtns = AddressOf Dummy
|
|
FamilyMachiningTreeViewItem.m_delIsEnabledBtns = AddressOf Dummy
|
|
MachiningTreeViewItem.m_delNotifyPropertyChanged = AddressOf Dummy
|
|
FamilyMachiningTreeViewItem.m_delNotifyPropertyChanged = AddressOf Dummy
|
|
|
|
Dim sName = String.Empty
|
|
Dim nType As Integer
|
|
EgtGetMachiningParam(MCH_MP.NAME, sName)
|
|
EgtGetMachiningParam(MCH_MP.TYPE, nType)
|
|
m_CurrOperation = New MachiningTreeViewItem(sName, DirectCast(nType, MCH_MY))
|
|
|
|
WoodDrillParamExpanderV.DataContext = Nothing
|
|
WoodSawParamExpanderV.DataContext = Nothing
|
|
WoodMillParamExpanderV.DataContext = Nothing
|
|
BeamMillParamExpanderV.DataContext = Nothing
|
|
PocketParamExpanderV.DataContext = Nothing
|
|
MortiseParamExpanderV.DataContext = Nothing
|
|
ChiselParamExpanderV.DataContext = Nothing
|
|
StoneSawParamExpanderV.DataContext = Nothing
|
|
StoneSawFinishParamExpanderV.DataContext = Nothing
|
|
StoneSawRoughParamExpanderV.DataContext = Nothing
|
|
StoneMillParamExpanderV.DataContext = Nothing
|
|
StoneDrillParamExpanderV.DataContext = Nothing
|
|
WjParamExpanderV.DataContext = Nothing
|
|
|
|
m_CurrOperation.ReadOperationParam()
|
|
|
|
IsModified(False)
|
|
ErrorOnOperation(False)
|
|
|
|
' EgtGetMachiningParam(MCH_MP.TYPE, m_Type)
|
|
If IsNothing(nType) Then Return Nothing
|
|
|
|
Dim MatType As MaterialType = EgtWPFLib5.MachiningTreeViewItem.m_MatType
|
|
|
|
Select Case nType
|
|
Case MCH_OY.DRILLING
|
|
If MatType = MaterialType.STONE Then
|
|
StoneDrillParamExpanderV.DataContext = m_CurrOperation
|
|
Return StoneDrillParamExpanderV
|
|
Else
|
|
WoodDrillParamExpanderV.DataContext = m_CurrOperation
|
|
Return WoodDrillParamExpanderV
|
|
End If
|
|
Case MCH_OY.SAWING
|
|
If MatType = MaterialType.STONE Then
|
|
StoneSawParamExpanderV.DataContext = m_CurrOperation
|
|
Return StoneSawParamExpanderV
|
|
Else
|
|
WoodSawParamExpanderV.DataContext = m_CurrOperation
|
|
Return WoodSawParamExpanderV
|
|
End If
|
|
Case MCH_OY.MILLING
|
|
If MatType = MaterialType.BEAM Then
|
|
BeamMillParamExpanderV.DataContext = m_CurrOperation
|
|
Return BeamMillParamExpanderV
|
|
ElseIf MatType = MaterialType.STONE Then
|
|
StoneMillParamExpanderV.DataContext = m_CurrOperation
|
|
Return StoneMillParamExpanderV
|
|
Else
|
|
WoodMillParamExpanderV.DataContext = m_CurrOperation
|
|
Return WoodMillParamExpanderV
|
|
End If
|
|
Case MCH_OY.SAWROUGHING
|
|
StoneSawRoughParamExpanderV.DataContext = m_CurrOperation
|
|
Return StoneSawRoughParamExpanderV
|
|
Case MCH_OY.SAWFINISHING
|
|
StoneSawFinishParamExpanderV.DataContext = m_CurrOperation
|
|
Return StoneSawFinishParamExpanderV
|
|
Case MCH_OY.POCKETING
|
|
PocketParamExpanderV.DataContext = m_CurrOperation
|
|
Return PocketParamExpanderV
|
|
Case MCH_OY.MORTISING
|
|
MortiseParamExpanderV.DataContext = m_CurrOperation
|
|
Return MortiseParamExpanderV
|
|
Case MCH_OY.CHISELING
|
|
ChiselParamExpanderV.DataContext = m_CurrOperation
|
|
Return ChiselParamExpanderV
|
|
Case MCH_OY.WATERJETTING
|
|
WjParamExpanderV.DataContext = m_CurrOperation
|
|
Return WjParamExpanderV
|
|
End Select
|
|
|
|
'MachiningParameterExpanderItem.ReadOperationParam()
|
|
|
|
Return Nothing
|
|
End Get
|
|
End Property
|
|
|
|
#Region "Messages"
|
|
|
|
Public ReadOnly Property UpdateMachiningBtnMsg As String
|
|
Get
|
|
Return EgtMsg(MSG_OPERATION + 3) 'Applica Lavorazione
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ViewToolBtnMsg As String
|
|
Get
|
|
Return EgtMsg(MSG_OPERATION + 13) 'Anteprima Utensile
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property NextStepToolBtnMsg As String
|
|
Get
|
|
Return EgtMsg(MSG_OPERATION + 14) 'Avanti
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PrevStepToolBtnMsg As String
|
|
Get
|
|
Return EgtMsg(MSG_OPERATION + 15) 'Indietro
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' Messages
|
|
|
|
' Definizione comando
|
|
Private m_cmdNextStepTool As ICommand
|
|
Private m_cmdPrevStepTool As ICommand
|
|
Private m_cmdUpdateMachining As ICommand
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
|
|
WoodDrillParamExpanderV = New WoodDrillingParameterExpanderV
|
|
WoodSawParamExpanderV = New WoodSawingParameterExpanderV
|
|
WoodMillParamExpanderV = New WoodMillingParameterExpanderV
|
|
BeamMillParamExpanderV = New BeamMillingParameterExpanderV
|
|
PocketParamExpanderV = New PocketingParameterExpanderV
|
|
MortiseParamExpanderV = New MortisingParameterExpanderV
|
|
ChiselParamExpanderV = New ChiselingParameterExpanderV
|
|
StoneSawParamExpanderV = New StoneSawingParameterExpanderV
|
|
StoneSawFinishParamExpanderV = New StoneSawFinishingParameterExpanderV
|
|
StoneSawRoughParamExpanderV = New StoneSawRoughingParameterExpanderV
|
|
StoneMillParamExpanderV = New StoneMillingParameterExpanderV
|
|
StoneDrillParamExpanderV = New StoneDrillingParameterExpanderV
|
|
WjParamExpanderV = New WaterjettingParameterExpanderV
|
|
|
|
NotifyPropertyChanged("ParamExpanderPageV")
|
|
End Sub
|
|
|
|
#End Region ' Constructor
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "NextStepToolCommand"
|
|
|
|
''' <summary>
|
|
''' Restituisce funzione per ricalcolo lavorazione.
|
|
''' </summary>
|
|
Public ReadOnly Property NextStepToolCommand As ICommand
|
|
Get
|
|
If m_cmdNextStepTool Is Nothing Then
|
|
m_cmdNextStepTool = New RelayCommand(AddressOf NextStepTool)
|
|
End If
|
|
Return m_cmdNextStepTool
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Ricalcola una lavorazione.
|
|
''' </summary>
|
|
Public Sub NextStepTool(ByVal param As Object)
|
|
If m_bPreviewTool Then
|
|
Dim nNextId = EgtPreviewMachiningTool(m_nPtEntId, MCH_PTM.AFTER)
|
|
If nNextId <> GDB_ID.NULL Then m_nPtEntId = nNextId
|
|
EgtDraw()
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' NextStepToolCommand
|
|
|
|
#Region "PrevStepToolCommand"
|
|
|
|
''' <summary>
|
|
''' Restituisce funzione per ricalcolo lavorazione.
|
|
''' </summary>
|
|
Public ReadOnly Property PrevStepToolCommand As ICommand
|
|
Get
|
|
If m_cmdPrevStepTool Is Nothing Then
|
|
m_cmdPrevStepTool = New RelayCommand(AddressOf PrevStepTool)
|
|
End If
|
|
Return m_cmdPrevStepTool
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Ricalcola una lavorazione.
|
|
''' </summary>
|
|
Public Sub PrevStepTool(ByVal param As Object)
|
|
If m_bPreviewTool Then
|
|
Dim nPrevId = EgtPreviewMachiningTool(m_nPtEntId, MCH_PTM.BEFORE)
|
|
If nPrevId <> GDB_ID.NULL Then m_nPtEntId = nPrevId
|
|
EgtDraw()
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' PrevStepToolCommand
|
|
|
|
#Region "UpdateMachiningCommand"
|
|
|
|
''' <summary>
|
|
''' Restituisce funzione per ricalcolo lavorazione.
|
|
''' </summary>
|
|
Public ReadOnly Property UpdateMachiningCommand As ICommand
|
|
Get
|
|
If m_cmdUpdateMachining Is Nothing Then
|
|
m_cmdUpdateMachining = New RelayCommand(AddressOf UpdateMachining)
|
|
End If
|
|
Return m_cmdUpdateMachining
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Ricalcola una lavorazione.
|
|
''' </summary>
|
|
Public Sub UpdateMachining(ByVal param As Object)
|
|
' Verifico la presenza di errori: se ci sono li mostro in una MessageBox ed esco da UpdateMachining
|
|
If m_CurrOperation_ErrorOnOperation Then
|
|
Dim sErrorList As String = String.Empty
|
|
For Each [property] As String In EgtWPFLib5.MachiningTreeViewItem.ValidatedProperties
|
|
If Not String.IsNullOrEmpty(m_CurrOperation.GetErrorString([property])) Then
|
|
sErrorList += Environment.NewLine + " - " + m_CurrOperation.GetErrorString([property])
|
|
End If
|
|
Next [property]
|
|
MessageBox.Show(EgtMsg(5423) + sErrorList, EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return
|
|
End If
|
|
Dim bRecalc As Boolean = ((Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift)
|
|
' La modifica di alcuni parametri forza il ricalcolo della geometria
|
|
Dim ModifiedGeometry As Boolean = m_CurrOperation.m_IsModifiedSelectedFaceUseType
|
|
' aggiorno valori modificati
|
|
m_CurrOperation.WriteOperationParam()
|
|
' Carico tutta la geometria selezionata in una lista
|
|
Dim SelectedGeometry As New List(Of Integer)
|
|
Dim EntityIndex As Integer = EgtGetFirstSelectedObj()
|
|
While EntityIndex <> GDB_ID.NULL
|
|
SelectedGeometry.Add(EntityIndex)
|
|
EntityIndex = EgtGetNextSelectedObj()
|
|
End While
|
|
' Gestione speciale per superfici ( si aggiunge l'identificazione della faccia)
|
|
If SelectedGeometry.Count() > 0 AndAlso
|
|
(EgtGetType(SelectedGeometry(0)) = GDB_TY.SRF_MESH Or EgtGetType(SelectedGeometry(0)) = GDB_TY.SRF_FRGN) Then
|
|
' Aggiorno lista speciale con facce
|
|
SelData.VerifyIdSub()
|
|
' Verifico se geometria cambiata, confrontando selezione attuale con facet con geometria di lavorazione
|
|
Dim nInd As Integer = 0
|
|
Dim nMchId, nMchSub As Integer
|
|
EgtGetMachiningGeometry(nInd, nMchId, nMchSub)
|
|
Dim nSelId, nSelSub As Integer
|
|
SelData.GetIdSub(nInd, nSelId, nSelSub)
|
|
While Not ModifiedGeometry And (nMchId <> GDB_ID.NULL Or nSelId <> GDB_ID.NULL)
|
|
' Controllo uguaglianza
|
|
If nMchId <> nSelId Or nMchSub <> nSelSub Then ModifiedGeometry = True
|
|
' Passo al successivo
|
|
nInd += 1
|
|
EgtGetMachiningGeometry(nInd, nMchId, nMchSub)
|
|
SelData.GetIdSub(nInd, nSelId, nSelSub)
|
|
End While
|
|
If ModifiedGeometry Then
|
|
Dim vId() As Integer = Nothing
|
|
Dim vSub() As Integer = Nothing
|
|
SelData.GetAllIdSub(vId, vSub)
|
|
EgtSetMachiningGeometry(vId, vSub)
|
|
End If
|
|
' Gestione standard per altre entità (curve, testi, ...)
|
|
Else
|
|
' Verifico se geometria cambiata, confrontando selezione attuale con geometria di lavorazione
|
|
Dim nInd As Integer = 0
|
|
Dim nMchId, nMchSub As Integer
|
|
EgtGetMachiningGeometry(nInd, nMchId, nMchSub)
|
|
Dim nSelId As Integer
|
|
nSelId = If(nInd < SelectedGeometry.Count(), SelectedGeometry(nInd), GDB_ID.NULL)
|
|
While Not ModifiedGeometry And (nMchId <> GDB_ID.NULL Or nSelId <> GDB_ID.NULL)
|
|
' Controllo uguaglianza
|
|
If nMchId <> nSelId Then ModifiedGeometry = True
|
|
' Passo al successivo
|
|
nInd += 1
|
|
EgtGetMachiningGeometry(nInd, nMchId, nMchSub)
|
|
nSelId = If(nInd < SelectedGeometry.Count(), SelectedGeometry(nInd), GDB_ID.NULL)
|
|
End While
|
|
' Imposto geometria selezionata come geometria di lavorazione
|
|
If ModifiedGeometry Then
|
|
EgtSetMachiningGeometry(SelectedGeometry.ToArray)
|
|
End If
|
|
End If
|
|
' Ricalcolo la lavorazione
|
|
If Not EgtApplyMachining(bRecalc Or ModifiedGeometry) Then
|
|
If EgtGetLastMachMgrErrorId() <> 0 Then
|
|
Dim sErr As String = EgtGetLastMachMgrErrorString()
|
|
Dim sInfo As String = String.Empty
|
|
EgtGetOutstrokeInfo(sInfo)
|
|
If Not String.IsNullOrEmpty(sInfo) Then sErr &= " " & sInfo
|
|
MessageBox.Show(sErr, EgtMsg(MSG_SIMULATION + 5), MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Else
|
|
MessageBox.Show(EgtMsg(MSG_SIMULATION + 6), EgtMsg(MSG_SIMULATION + 5), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
Else
|
|
If EgtGetMachMgrWarningId(0) <> 0 Then
|
|
Dim sWarn As String = EgtGetMachMgrWarningString(0)
|
|
Map.refStatusBarVM.NotifyStatusOutput(sWarn)
|
|
Else
|
|
Map.refStatusBarVM.NotifyStatusOutput("")
|
|
End If
|
|
End If
|
|
' Restart visualizzazione utensile
|
|
If m_bPreviewTool Then
|
|
EgtPreparePreviewMachiningTool()
|
|
m_nPtEntId = EgtPreviewMachiningTool(GDB_ID.NULL, MCH_PTM.AFTER)
|
|
End If
|
|
IsModified(False) ' NotifyPropertyChanged("UpdateMachiningBtn_Background")
|
|
ErrorOnOperation(False)
|
|
EgtDraw()
|
|
Map.refProjectVM.EmitTitle()
|
|
End Sub
|
|
|
|
#End Region ' UpdateMachiningCommand
|
|
|
|
#End Region ' Commands
|
|
|
|
Private Sub IsModified(IsModified As Boolean) Handles m_CurrOperation.m_IsModified
|
|
m_CurrOperation_IsModified = IsModified
|
|
' NotifyPropertyChanged("CurrOperation_IsModified")
|
|
NotifyPropertyChanged("UpdateMachiningBtn_Background")
|
|
End Sub
|
|
|
|
Private Sub ErrorOnOperation(ErrorOnOperation As Boolean) Handles m_CurrOperation.m_ErrorOnOperation
|
|
m_CurrOperation_ErrorOnOperation = ErrorOnOperation
|
|
' NotifyPropertyChanged("CurrOperation_ErrorOnOperation")
|
|
NotifyPropertyChanged("UpdateMachiningBtn_Background")
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
''' <summary>
|
|
''' Class that represent a Converter that use machining type and param type, to set the visibility state of the param type.
|
|
''' </summary>
|
|
Public Class OperationParamVisibilityConverter
|
|
Implements IValueConverter
|
|
|
|
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
|
|
Select Case CInt(value)
|
|
Case MCH_OY.NONE
|
|
Return Visibility.Hidden
|
|
Case MCH_OY.DISP
|
|
Return TMDbParamVisibility.OperationDisposition(CInt(parameter))
|
|
Case MCH_OY.DRILLING
|
|
Return TMDbParamVisibility.Drilling(CInt(parameter))
|
|
Case MCH_OY.SAWING
|
|
Return TMDbParamVisibility.Sawing(CInt(parameter))
|
|
Case MCH_OY.MILLING
|
|
Return TMDbParamVisibility.Milling(CInt(parameter))
|
|
Case MCH_OY.POCKETING
|
|
Return TMDbParamVisibility.Pocketing(CInt(parameter))
|
|
Case MCH_OY.MORTISING
|
|
Return TMDbParamVisibility.Mortising(CInt(parameter))
|
|
Case MCH_OY.SAWROUGHING
|
|
Return TMDbParamVisibility.Sawroughing(CInt(parameter))
|
|
Case MCH_OY.SAWFINISHING
|
|
Return TMDbParamVisibility.Sawfinishing(CInt(parameter))
|
|
Case MCH_OY.GENMACHINING
|
|
Return TMDbParamVisibility.GenMachining(CInt(parameter))
|
|
Case MCH_OY.CHISELING
|
|
Return TMDbParamVisibility.Chiseling(CInt(parameter))
|
|
Case MCH_OY.SURFFINISHING
|
|
Return TMDbParamVisibility.SurfFinishing(CInt(parameter))
|
|
Case MCH_OY.WATERJETTING
|
|
Return TMDbParamVisibility.WaterJetting(CInt(parameter))
|
|
Case Else
|
|
Return Visibility.Hidden
|
|
End Select
|
|
End Function
|
|
|
|
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
End Class
|
|
|
|
''' <summary>
|
|
''' Class that represent a Converter that convert mm in inch if necessary for the param depth.
|
|
''' </summary>
|
|
Public Class DepthUnitConverter
|
|
Implements IValueConverter
|
|
|
|
Friend Const INCHTOMM As String = "*25.4"
|
|
Friend Const INCHSYMBOL As String = """"
|
|
|
|
|
|
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
|
|
If Not IsNothing(value) Then
|
|
value = CStr(value).Replace(INCHTOMM, INCHSYMBOL)
|
|
End If
|
|
Return value
|
|
End Function
|
|
|
|
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
|
|
If Not IsNothing(value) Then
|
|
value = CStr(value).Replace(INCHSYMBOL, INCHTOMM)
|
|
End If
|
|
Return value
|
|
End Function
|
|
|
|
End Class |