@@ -780,10 +780,10 @@ public ByteSizeType ByteSize
780780ctrl . UpdateViewers ( true ) ;
781781ctrl . UpdateHeader ( true ) ;
782782
783- ctrl . TraverseHexBytes ( hctrl =>
783+ ctrl . TraverseHexBytes ( c =>
784784{
785- hctrl . UpdateDataVisualWidth ( ) ;
786- hctrl . UpdateTextRenderFromByte ( ) ;
785+ c . UpdateDataVisualWidth ( ) ;
786+ c . UpdateTextRenderFromByte ( ) ;
787787} ) ;
788788
789789ctrl . UpdateByteModified ( ) ;
@@ -807,10 +807,10 @@ public DataVisualType DataStringVisual
807807
808808ctrl . UpdateHeader ( true ) ;
809809
810- ctrl . TraverseHexBytes ( hctrl =>
810+ ctrl . TraverseHexBytes ( c =>
811811{
812- hctrl . UpdateDataVisualWidth ( ) ;
813- hctrl . UpdateTextRenderFromByte ( ) ;
812+ c . UpdateDataVisualWidth ( ) ;
813+ c . UpdateTextRenderFromByte ( ) ;
814814} ) ;
815815} ) ) ;
816816
@@ -1310,36 +1310,34 @@ public long SelectionStart
13101310
13111311public static readonly DependencyProperty SelectionStartProperty =
13121312DependencyProperty . Register ( nameof ( SelectionStart ) , typeof ( long ) , typeof ( HexEditor ) ,
1313- new FrameworkPropertyMetadata ( - 1L , SelectionStart_ChangedCallBack , SelectionStart_CoerceValueCallBack ) ) ;
1314-
1315- private static object SelectionStart_CoerceValueCallBack ( DependencyObject d , object baseValue )
1316- {
1317- if ( d is notHexEditor ctrl ) return - 1L ;
1318- if ( ! CheckIsOpen ( ctrl . _provider ) ) return - 1L ;
1319- if ( ( long ) baseValue < - 1 ) return - 1L ;
1320-
1321- return baseValue ;
1322- }
1323-
1324- private static void SelectionStart_ChangedCallBack ( DependencyObject d , DependencyPropertyChangedEventArgs e )
1325- {
1326- if ( d is notHexEditor ctrl ) return ;
1327- if ( e . NewValue == e . OldValue ) return ;
1328- if ( ! CheckIsOpen ( ctrl . _provider ) ) return ;
1313+ new FrameworkPropertyMetadata ( - 1L ,
1314+ ( DependencyObject d , DependencyPropertyChangedEventArgs e ) =>
1315+ {
1316+ if ( d is notHexEditor ctrl ) return ;
1317+ if ( e . NewValue == e . OldValue ) return ;
1318+ if ( ! CheckIsOpen ( ctrl . _provider ) ) return ;
1319+
1320+ ctrl . SelectionByte = ctrl . _provider . GetByte ( ctrl . SelectionStart ) . singleByte ;
1321+
1322+ ctrl . UpdateSelection ( ) ;
1323+ ctrl . UpdateSelectionLine ( ) ;
1324+ ctrl . UpdateVisual ( ) ;
1325+ ctrl . UpdateStatusBar ( false ) ;
1326+ ctrl . UpdateLinesInfo ( ) ;
1327+ ctrl . UpdateHeader ( true ) ;
1328+ ctrl . SetScrollMarker ( 0 , ScrollMarker . SelectionStart ) ;
1329+
1330+ ctrl . SelectionStartChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1331+ ctrl . SelectionLengthChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1332+ } , ( DependencyObject d , object baseValue ) =>
1333+ {
1334+ if ( d is notHexEditor ctrl ) return - 1L ;
1335+ if ( ! CheckIsOpen ( ctrl . _provider ) ) return - 1L ;
1336+ if ( ( long ) baseValue < - 1 ) return - 1L ;
13291337
1330- ctrl . SelectionByte = ctrl . _provider . GetByte ( ctrl . SelectionStart ) . singleByte ;
1338+ return baseValue ;
1339+ } ) ) ;
13311340
1332- ctrl . UpdateSelection ( ) ;
1333- ctrl . UpdateSelectionLine ( ) ;
1334- ctrl . UpdateVisual ( ) ;
1335- ctrl . UpdateStatusBar ( false ) ;
1336- ctrl . UpdateLinesInfo ( ) ;
1337- ctrl . UpdateHeader ( true ) ;
1338- ctrl . SetScrollMarker ( 0 , ScrollMarker . SelectionStart ) ;
1339-
1340- ctrl . SelectionStartChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1341- ctrl . SelectionLengthChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1342- }
13431341
13441342/// <summary>
13451343/// Set the end byte position of selection
@@ -1352,31 +1350,28 @@ public long SelectionStop
13521350
13531351public static readonly DependencyProperty SelectionStopProperty =
13541352DependencyProperty . Register ( nameof ( SelectionStop ) , typeof ( long ) , typeof ( HexEditor ) ,
1355- new FrameworkPropertyMetadata ( - 1L , SelectionStop_ChangedCallBack , SelectionStop_CoerceValueCallBack ) ) ;
1356-
1357- private static object SelectionStop_CoerceValueCallBack ( DependencyObject d , object baseValue )
1358- {
1359- if ( d is notHexEditor ctrl ) return baseValue ;
1360-
1361- var value = ( long ) baseValue ;
1353+ new FrameworkPropertyMetadata ( - 1L ,
1354+ ( DependencyObject d , DependencyPropertyChangedEventArgs e ) =>
1355+ {
1356+ if ( d is notHexEditor ctrl || e . NewValue == e . OldValue ) return ;
13621357
1363- if ( value < - 1 || ! CheckIsOpen ( ctrl . _provider ) ) return - 1L ;
1358+ ctrl . UpdateSelection ( ) ;
1359+ ctrl . UpdateSelectionLine ( ) ;
13641360
1365- return value >= ctrl . _provider . Length
1366- ? ctrl . _provider . Length
1367- : baseValue ;
1368- }
1361+ ctrl . SelectionStopChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1362+ ctrl . SelectionLengthChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1363+ } , ( DependencyObject d , object baseValue ) =>
1364+ {
1365+ if ( d is notHexEditor ctrl ) return baseValue ;
13691366
1370- private static void SelectionStop_ChangedCallBack ( DependencyObject d , DependencyPropertyChangedEventArgs e )
1371- {
1372- if ( d is notHexEditor ctrl || e . NewValue == e . OldValue ) return ;
1367+ var value = ( long ) baseValue ;
13731368
1374- ctrl . UpdateSelection ( ) ;
1375- ctrl . UpdateSelectionLine ( ) ;
1369+ if ( value < - 1 || ! CheckIsOpen ( ctrl . _provider ) ) return - 1L ;
13761370
1377- ctrl . SelectionStopChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1378- ctrl . SelectionLengthChanged ? . Invoke ( ctrl , new EventArgs ( ) ) ;
1379- }
1371+ return value >= ctrl . _provider . Length
1372+ ? ctrl . _provider . Length
1373+ : baseValue ;
1374+ } ) ) ;
13801375
13811376/// <summary>
13821377/// Fix the selection start and stop when needed
@@ -2551,34 +2546,29 @@ public int BytePerLine
25512546
25522547public static readonly DependencyProperty BytePerLineProperty =
25532548DependencyProperty . Register ( nameof ( BytePerLine ) , typeof ( int ) , typeof ( HexEditor ) ,
2554- new FrameworkPropertyMetadata ( 16 , BytePerLine_PropertyChanged , BytePerLine_CoerceValue ) ) ;
2555-
2556- private static object BytePerLine_CoerceValue ( DependencyObject d , object baseValue ) =>
2557- ( int ) baseValue < 1 ? 1 : ( ( int ) baseValue > 64 ? 64 : baseValue ) ;
2558-
2559- private static void BytePerLine_PropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
2560- {
2561- if ( d is notHexEditor ctrl || e . NewValue == e . OldValue ) return ;
2549+ new FrameworkPropertyMetadata ( 16 , ( DependencyObject d , DependencyPropertyChangedEventArgs e ) =>
2550+ {
2551+ if ( d is notHexEditor ctrl || e . NewValue == e . OldValue ) return ;
25622552
2563- ctrl . With ( c=>
2564- {
2565- //Get previous state
2566- var firstPos = c . FirstVisibleBytePosition ;
2567- var startPos = c . SelectionStart ;
2568- var stopPos = c . SelectionStop ;
2569-
2570- //refresh
2571- c . UpdateScrollBar ( ) ;
2572- c . BuildDataLines ( c . MaxVisibleLine , true ) ;
2573- c . RefreshView ( true ) ;
2574- c . UpdateHeader ( true ) ;
2575-
2576- //Set previous state
2577- c . SetPosition ( firstPos ) ;
2578- c . SelectionStart = startPos ;
2579- c . SelectionStop = stopPos ;
2580- } ) ;
2581- }
2553+ ctrl . With ( c=>
2554+ {
2555+ //Get previous state
2556+ var firstPos = c . FirstVisibleBytePosition ;
2557+ var startPos = c . SelectionStart ;
2558+ var stopPos = c . SelectionStop ;
2559+
2560+ //refresh
2561+ c . UpdateScrollBar ( ) ;
2562+ c . BuildDataLines ( c . MaxVisibleLine , true ) ;
2563+ c . RefreshView ( true ) ;
2564+ c . UpdateHeader ( true ) ;
2565+
2566+ //Set previous state
2567+ c . SetPosition ( firstPos ) ;
2568+ c . SelectionStart = startPos ;
2569+ c . SelectionStop = stopPos ;
2570+ } ) ;
2571+ } , ( DependencyObject d , object baseValue ) => ( int ) baseValue < 1 ? 1 : ( ( int ) baseValue > 64 ? 64 : baseValue ) ) ) ;
25822572
25832573 #endregion
25842574
@@ -2595,34 +2585,29 @@ public double StringByteWidth
25952585
25962586public static readonly DependencyProperty StringByteWidthProperty =
25972587DependencyProperty . Register ( nameof ( StringByteWidth ) , typeof ( double ) , typeof ( HexEditor ) ,
2598- new FrameworkPropertyMetadata ( 10d , StringByteWidth_PropertyChanged , StringByteWidth_CoerceValue ) ) ;
2599-
2600- private static object StringByteWidth_CoerceValue ( DependencyObject d , object baseValue ) =>
2601- ( double ) baseValue < 1 ? 1 : ( ( double ) baseValue > 64 ? 64 : baseValue ) ;
2602-
2603- private static void StringByteWidth_PropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
2604- {
2605- if ( d is notHexEditor ctrl || e . NewValue == e . OldValue ) return ;
2588+ new FrameworkPropertyMetadata ( 10d , ( DependencyObject d , DependencyPropertyChangedEventArgs e ) =>
2589+ {
2590+ if ( d is notHexEditor ctrl || e . NewValue == e . OldValue ) return ;
26062591
2607- ctrl . With ( c=>
2608- {
2609- //Get previous state
2610- var firstPos = c . FirstVisibleBytePosition ;
2611- var startPos = c . SelectionStart ;
2612- var stopPos = c . SelectionStop ;
2613-
2614- //refresh
2615- c . UpdateScrollBar ( ) ;
2616- c . BuildDataLines ( c . MaxVisibleLine , true ) ;
2617- c . RefreshView ( true ) ;
2618- c . UpdateHeader ( true ) ;
2619-
2620- //Set previous state
2621- c . SetPosition ( firstPos ) ;
2622- c . SelectionStart = startPos ;
2623- c . SelectionStop = stopPos ;
2624- } ) ;
2625- }
2592+ ctrl . With ( c=>
2593+ {
2594+ //Get previous state
2595+ var firstPos = c . FirstVisibleBytePosition ;
2596+ var startPos = c . SelectionStart ;
2597+ var stopPos = c . SelectionStop ;
2598+
2599+ //refresh
2600+ c . UpdateScrollBar ( ) ;
2601+ c . BuildDataLines ( c . MaxVisibleLine , true ) ;
2602+ c . RefreshView ( true ) ;
2603+ c . UpdateHeader ( true ) ;
2604+
2605+ //Set previous state
2606+ c . SetPosition ( firstPos ) ;
2607+ c . SelectionStart = startPos ;
2608+ c . SelectionStop = stopPos ;
2609+ } ) ;
2610+ } , ( DependencyObject d , object baseValue ) => ( double ) baseValue < 1 ? 1 : ( ( double ) baseValue > 64 ? 64 : baseValue ) ) ) ;
26262611
26272612 #endregion
26282613