亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

WPF流程圖制作系列相關基礎二

2019-11-14 15:44:29
字體:
來源:轉載
供稿:網友
   我們現在知道 thumb ,可以讓用戶自行拖動其在 canvas上移動,在這個而基礎上 我們可以試著往流程圖方向靠近一下。
我們知道,流程圖,都是一個一個的流程塊,然后用線連起來的,這一個一個的流程塊可能會有各種各樣的形狀, 比如長方形,菱形
這很簡單 ,只需要設置 thumb使用不同的控件模板就ok.
 
在 界面上 放置了多個 thumb之后, 每一個都是需要響應dragDelta事件 才可以實現拖動的, 這樣的話 就基本要給每一個thumb寫上各自的 dragDelta處理方法。 如果這樣子,那代碼就開始臃腫了。
所以 針對可以拖動的滑塊,可以開發子類 如下:
 
public class MoveThumb :Thumb    {        public MoveThumb()        {            this.DragDelta += MoveThumb_DragDelta;        }        public void MoveThumb_DragDelta(object sender, DragDeltaEventArgs e)        {            Thumb myThumb = (Thumb )sender;            double nTop = Canvas .GetTop(myThumb) + e.VerticalChange;            double nLeft = Canvas .GetLeft(myThumb) + e.HorizontalChange;            Canvas.SetTop(myThumb, nTop);            Canvas.SetLeft(myThumb, nLeft);        }           }

前臺

    <Window.Resources>        <ControlTemplate x :Key="rec">            <Rectangle Fill ="Gray" Width="70" Height="50"></ Rectangle>        </ControlTemplate>        <ControlTemplate x :Key="ell">            <Ellipse Fill ="Gray" Width="70" Height="70"></ Ellipse>        </ControlTemplate>    </Window.Resources >    <Grid >        <Canvas Background ="AliceBlue" HorizontalAlignment="Left" Height="412" Margin="10,10,0,0" VerticalAlignment="Top" Width="522">            <local: MoveThumb Canvas.Left="50" Canvas.Top="50" Template="{StaticResource rec}"></local: MoveThumb>            <local: MoveThumb Canvas.Left="140" Canvas.Top="50" Template="{StaticResource ell}"></local: MoveThumb>            <local: MoveThumb Canvas.Left="250" Canvas.Top="50" Template="{StaticResource ell}"></local: MoveThumb>        </Canvas>    </Grid >

 

效果如下
 是的,我們現在的這些滑塊 都可以在畫布上滑動了。但是 上面代碼的的寫法有不好的地方在于,thumb塊不是內容控件,他是不可以在內部放東西的。而我們的這一系列功能是為了給以后的流程圖做鋪墊, 而流程圖的塊里面 到時候是需要實際放上我們的activity活動來作為執行的。所以我們應該 換一種寫法思路來實現目前的這個效果。
我們應該改造成 讓界面上的都是內容控件,而這些內容控件的controlTemplate則使用上面開發的 MoveThumb。這樣一來 代碼還是要有不少變動的。
頁面元素變為
  <ContentControl Canvas.Left ="50" Canvas.Top="50" Template="{StaticResource thumbItemTemplate}">                <Ellipse Width ="50" Height="50" Fill="OrangeRed" IsHitTestVisible="False"></ Ellipse>            </ContentControl>
 <ControlTemplate x :Key="rawThumbTemplate" TargetType="Thumb">            <Rectangle Fill ="Transparent"></Rectangle>        </ControlTemplate>        <ControlTemplate x :Key="thumbItemTemplate" TargetType="ContentControl">            <Grid DataContext ="{Binding RelativeSource ={RelativeSource TemplatedParent}}">                <!--這里的放置順序還是有講究的-->                <local: MoveThumb Template="{ StaticResource rawThumbTemplate}" Cursor="SizeAll"></ local:MoveThumb >                <ContentPResenter Content ="{TemplateBinding Content}"></ContentPresenter>                           </Grid>        </ControlTemplate>
注意到 我們這邊綁定了 模板中 MoveThumb的datacontext為使用這個模板的元素,這樣moveThumb代碼修改如下
 public void MoveThumb_DragDelta( object sender, DragDeltaEventArgs e)        {            Control item = this.DataContext as Control;            if(item!= null)            {                double left = Canvas.GetLeft(item);                double top = Canvas.GetTop(item);                Canvas.SetTop(item,top+e.VerticalChange);                Canvas.SetLeft(item,left+e.HorizontalChange);            }        }
就可以通過 DataContext獲取 實際需要在畫板上位移的元素。 運行出來的效果是一樣的。只不過我們界面上的元素成為了 contentControl,這樣子以后 像其內部放東西 就成為可能。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久成人精品| 亚洲精品按摩视频| 久久久久久高潮国产精品视| 国产ts一区二区| 欧美另类暴力丝袜| 在线午夜精品自拍| 一本久久综合亚洲鲁鲁| 国语自产在线不卡| 亚洲一区二区久久久| 欧美肥婆姓交大片| 日韩一区二区三区xxxx| 岛国av一区二区| 91在线免费网站| 草民午夜欧美限制a级福利片| 国产精品 欧美在线| 精品国产91久久久| 亚洲色图综合久久| 精品国产一区二区三区久久久| 国产亚洲欧美aaaa| 欧美性猛交xxxx免费看久久久| 国产精品黄视频| 蜜臀久久99精品久久久无需会员| 欧美性猛交xxxx免费看漫画| 日韩va亚洲va欧洲va国产| 国产精品三级美女白浆呻吟| 国产亚洲欧美视频| 国产一区二区久久精品| 久久精品99久久香蕉国产色戒| 亚洲男人第一av网站| 国产成人综合精品在线| 国产精品久久999| 国模视频一区二区| 欧美xxxx14xxxxx性爽| 欧美性资源免费| 色www亚洲国产张柏芝| 26uuu国产精品视频| 51午夜精品视频| 午夜精品久久久久久久99黑人| 亚洲国产欧美在线成人app| 亚洲人成电影网站色xx| 国产精品久久不能| 成人免费大片黄在线播放| 亚洲第一区第二区| 美女啪啪无遮挡免费久久网站| 国产午夜精品视频| 精品性高朝久久久久久久| 成人中文字幕在线观看| 日韩在线一区二区三区免费视频| 色婷婷综合久久久久中文字幕1| 黄色成人av在线| 国产91对白在线播放| 欧美性猛交xxxx免费看久久久| 亚洲视频欧美视频| 国模私拍一区二区三区| 亚洲人成伊人成综合网久久久| 欧美激情一二区| 日韩中文字幕久久| 日韩免费观看视频| 欧美日韩在线免费| 亚洲女同性videos| 国产精品网站视频| 国产成人在线精品| 97久久精品国产| 国产在线久久久| 亚洲自拍小视频免费观看| 成人性生交xxxxx网站| 欧美大学生性色视频| 精品亚洲男同gayvideo网站| 一本色道久久88综合日韩精品| 久久中文精品视频| 国产精品亚洲视频在线观看| www日韩中文字幕在线看| 国产精品一区二区久久久| 国内揄拍国内精品| 一区二区三区国产视频| 97视频在线观看免费高清完整版在线观看| 在线观看欧美日韩国产| 在线播放国产一区二区三区| 国产精选久久久久久| 日韩影视在线观看| 亚洲视频第一页| 国产精品视频一区二区高潮| 97婷婷大伊香蕉精品视频| 精品视频久久久久久| 中文字幕日韩欧美在线视频| 国产亚洲美女精品久久久| 国产一区二区三区直播精品电影| 欧美成人全部免费| 欧美最猛黑人xxxx黑人猛叫黄| 一区二区亚洲欧洲国产日韩| 久久97久久97精品免视看| 精品毛片三在线观看| 日韩高清电影好看的电视剧电影| 国产亚洲精品美女| 国产午夜精品免费一区二区三区| 日韩有码在线播放| 欧美精品一本久久男人的天堂| 亚洲国产精品人人爽夜夜爽| 国产精品久久久久久婷婷天堂| 韩国欧美亚洲国产| 欧美性猛交xxxx乱大交| 久久手机免费视频| 成人免费在线视频网站| 欧美日本在线视频中文字字幕| 欧美一级视频一区二区| 在线视频精品一| 91性高湖久久久久久久久_久久99| www.午夜精品| 欧美又大又硬又粗bbbbb| 国产精品视频久| 黑人巨大精品欧美一区二区一视频| 欧美在线视频播放| 日韩在线视频线视频免费网站| 伊人青青综合网站| 国产91亚洲精品| 欧美野外猛男的大粗鳮| 在线亚洲午夜片av大片| 黑人狂躁日本妞一区二区三区| 国产精品大陆在线观看| 日韩av一区在线观看| 久久成人这里只有精品| 久久久久久久一| 色综合久久久888| 91精品一区二区| 精品国产欧美一区二区三区成人| 午夜精品久久17c| 97免费视频在线播放| 日韩美女福利视频| 91久久久久久久| 国产精品a久久久久久| 国产婷婷成人久久av免费高清| 成人午夜小视频| 国产精品久久久久秋霞鲁丝| 国内精品小视频在线观看| 777午夜精品福利在线观看| 国产精品色婷婷视频| 欧美裸体xxxx| 成人激情在线播放| 91精品久久久久久久久久久| 国产精品久久在线观看| 国产精品久久久久久久久借妻| 日av在线播放中文不卡| 成人a视频在线观看| 色777狠狠综合秋免鲁丝| 久久久久久久999精品视频| 亚洲在线观看视频网站| 欧美日韩美女视频| 欧美大尺度在线观看| 国产日韩欧美在线观看| 日韩欧美成人精品| 日韩一区二区精品视频| 欧美激情在线有限公司| 国产成人亚洲综合91精品| 日韩69视频在线观看| 国产精品91久久久| 亚洲电影在线观看| 日韩欧美在线免费观看| 欧美黑人巨大精品一区二区| 亚洲人成在线免费观看| 亚洲成人激情在线| 亚洲成av人片在线观看香蕉| 亚洲黄色有码视频| 国产色婷婷国产综合在线理论片a| 日本91av在线播放|