首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

WPF/Silverlight 遊戲開發教程 (二十二-2):屬性訪問器封裝 Canvas.Left/Top/ZIndex — 重構之美

     編輯:關於C語言

從網頁 CSS 靈感到 WPF 屬性封裝

網頁 position:absolute 下的 left/top/z-index 與 WPF Canvas 絕對定位異曲同工。原代碼混用 Canvas.SetLeft/SetTop/SetValue(ZIndexProperty),風格不一、可讀性差。

網頁絕對定位與Canvas對比示意圖

為 QXMap 添加三個優雅屬性

public double Left
{
    get => (double)GetValue(Canvas.LeftProperty);
    set => SetValue(Canvas.LeftProperty, value);
}

public double Top
{
    get => (double)GetValue(Canvas.TopProperty);
    set => SetValue(Canvas.TopProperty, value);
}

public int ZIndex
{
    get => (int)GetValue(Canvas.ZIndexProperty);
    set => SetValue(Canvas.ZIndexProperty, value);
}

初始化代碼對比

重構前 (風格混亂):

MapSurface.Width = 1750;
MapSurface.Height = 1440;
MapSurface.Source = ...;
Carrier.Children.Add(MapSurface);
Canvas.SetLeft(MapSurface, -320);
Canvas.SetTop(MapSurface, -200);
MapSurface.SetValue(Canvas.ZIndexProperty, -1);

重構後 (統一屬性賦值,優雅易讀):

MapSurface.Width = 1750;
MapSurface.Height = 1440;
MapSurface.Source = ...;
MapSurface.Left = -320;
MapSurface.Top = -200;
MapSurface.ZIndex = -1;
Carrier.Children.Add(MapSurface);

書寫統一、語義清晰、維護輕鬆 — 重構重要手法之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved