WPF:談談各種多線程去修改或訪問UI線程資料的方法

這屬於老話題了,這篇文章就算做一個小匯總吧。 例子就比如要修改表單的Title屬性,單線程的話,直接寫代碼就可以了,比如在Window的Loaded事件中修改Title:private void Window_Loaded_1(object sender, RoutedEventArgs e){    Title = "Mgen";} 直接用多線程修改的話:System.Threading.ThreadPool.QueueUserWorkItem(_ => Title = "Mgen");

WPF:表單不顯示或禁用最大化、最小化、關閉按鈕、表徵圖以及對話方塊顯示

這篇文章是其他文章的續寫,參考上文:WPF:更好得理解對話方塊和ShowDialog方法.NET(C#) 平台叫用:不依賴平台的GetWindowLongPtr和SetWindowLongPtr API 更新:感謝網友Engineer的評論,這一切可以在WPF中實現:ResizeMode=NoResize將不會顯示最大化最小化,只有關閉按鈕

WPF:使用RenderTargetBitmap和DrawingVisual為圖片添加簡單的浮水印

RenderTargetBitmap繼承自BitmapSource類型,並且定義有Clear和Render兩個重要方法,一個將圖片全部設定成黑色透明,另一個將WPF中的Visual對象輸出到映像中。 RenderTargetBitmap的建構函式參數都是構建位元影像映像的常用屬性:像素大小、DpiX、DpiY和像素儲存格式。對於普通圖片儲存,使用預設值就可以了。Dpi相關的參數用0(0代表使用預設值,而最終圖片的Dpi是不可能為0的,通常預設的是96),像素儲存格式用PixelFormats.D

WPF中內建類型的MeasureOverride和ArrangeOverride表現

Control(包括ContentControl),ContentPresenter MeasureOverride:用可用空間測量第一個Visual Tree子節點(調用Measure(availableSize參數)),並返回成員的期待大小(UIElement的DesiredSize)。ArrangeOverride:把第一個Visual Tree子節點視圖放在當前最終大小的(0,0)座標上(調用Arrange,用(0,0,finalSize)作參數)。 TextBlock

WPF:UIElement以及FrameworkElement中常見事件的運行順序

測試如下事件和方法:UIElement:OnRender方法。LayoutUpdated事件。 FrameworkElement:OnMeasureOverride方法。OnArrangeOverride方法。Loaded事件。Initialized事件。 以及自訂控制項中的相依性屬性設定。 代碼:class TestControl: Control{    public TestControl()    {        Loaded += new

WPF和Silverlight:導航Page中資料的傳遞

對於WPF導航來說,最大的瓶頸在於當前Page類型並沒有提供直接的針對Page自己資料傳遞的屬性或者方法,也就是說每一個Page從導航至顯示的整個過程Page本身是無從得知的。於是只能通過Frame類型的相關事件。當然本質上都是依靠被一個專門負責導航的類型:NavigationService類型。而NavigationService類型的事件都是針對整個導航的全域狀態的,Page類型是無法直接得到這些資料的。(注意Page類型也有NavigationService屬性)。 而Silverligh

WPF:Control的屬性沒有FrameworkPropertyMetadataOptions.AffectsRender和OnRender

標題就是事實,Control類型中影響顯示的相依性屬性在註冊的時候都沒有設定FrameworkPropertyMetadataOptions.AffectsRender屬性,而是FrameworkPropertyMetadataOptions.None,比如Foreground,Background,BorderThickness……。另一些文字相關的屬性則是FrameworkPropertyMetadataOptions.Inherits,同樣沒有AffectsRender枚舉值。這些可以在R

WPF:更好得理解對話方塊和ShowDialog方法

  目錄1. 關於標準對話方塊2. 關於ShowDialog方法3. 示範工程下載   返回目錄1. 關於標準對話方塊首先,一個標準的對話方塊應該嚴格具備至少如下特點:只要背後父表單顯示,它一定會顯示,並且覆蓋在父表單之上。 對話方塊的視窗標題不會顯示在工作列中的,工作列僅會顯示主表單的名稱。 對於強制回應對話方塊(Model Dialog),只有對話方塊關閉後,背後父表單才會獲得焦點。無強制回應對話方塊(Modeless Dialog)沒有這樣的限制。

WPF:Frame的成員在導航中的變化

理解Frame在導航中Source、CurrentSource和Content屬性,以及導航事件中NavigationEventArgs類型的Uri和Content屬性。 在Frame的Navigating和Navigated事件中,插入如下調試代碼:Debug.WriteLine("NavigationEventArgs.Uri: " + e.Uri);Debug.WriteLine("NavigationEventArgs.Content: " +

WPF:FrameworkPropertyMetadataOptions.Inherits 和 Visual.OnVisualChildrenChanged

FrameworkPropertyMetadataOptions.Inherits這個Inherit做得非常徹底,他會把所有Visual Tree中的節點都會遍曆一個遍,順序是先是父節點,然後子節點。 比如定義一個附加屬性:Mgen.AttachedDp:public static readonly DependencyProperty AttachedDpProperty =    DependencyProperty.RegisterAttached("AttachedDp",

WPF:更快捷地定義Label的Target屬性

在XAML中使用Label.Target,我們通常需要一個資料繫結來設定一個已命名的對象。這樣不僅需要給對應控制項加入名稱,同時還得用資料繫結來把Target屬性和對應控制項聯絡起來,比如這樣:<Label Target="{Binding ElementName=tbx}">姓名(_N)</Label><TextBox

WPF和Silverlight:Frame中Page的緩衝設定

目錄WPF中KeepAlive和FrameworkPropertyMetadataOptions.JournalSilverlight中NavigationCacheMode和CacheSize   返回目錄WPF中KeepAlive和FrameworkPropertyMetadataOptions.Journal在WPF中,Page預設是不緩衝的。每次導航返回至Page,Page都要被重新構建。 為了方便做測試,我們這樣定義Page,首先在Page中註冊一個普通的相依性屬性,預設值是“預設”。

WPF格子繪圖小程式:Mgen.Painter

左鍵畫筆,右鍵橡皮,就可以繪畫了。 網格個數,顏色和網格邊框都是可以設定的:  本來是作為可惡的課程作業,現在又把它好好改了改發上來。 程式和原始碼下載 注意:此為微軟SkyDrive存檔,請用瀏覽器直接下載,用某些下載工具可能無法下載 樣本程式運行環境:.NET Framework 4.0 Client Profile 原始碼環境:Microsoft Visual C# 2010 Express

WinRT:解析元素在Visual Tree和Logical Tree中的位置

嚴格上講,Visual Tree和Logical Tree是WPF的概念,不過既然都有XAML,那麼它們在WinRT中也是存在的。 首先WinRT中沒有WPF中的Visual,UIElement是直接繼承自DependencyObject的,然後下面是FrameworkElement。 接下來就是使用Windows.Ui.Xaml命名空間下的VisualTreeHelper類型,使用起來和WPF類似,比如根據當前元素尋找上面的Visual

WinRT: NavigationCacheMode.Disabled和LayoutAwarePage

WinRT的導航變化很大,當然從WPF,到Silverlight到現在的WinRT,XAML中的導航一直在變!(可以參考之前的一篇文章:從WPF到Silverlight到WinRT:導航的變化)。WinRT使用了一種特有的導航方式,以Type為標識的導航!微軟彷彿在強制命令我們寫入UI上資料的讀取和儲存邏輯。為什麼這樣說?因為在WinRT中,即便是你使用NavigationCacheMode.Enabled或者NavigationCacheMode.Required,頁面也確實被緩衝了,但是問題

WPF:一個先讓子控制項進行縮小的StackPanel

做項目中橫向顯示一堆控制項,然後當整體空間變小後,需要先將StackPanel中的一個控制項縮小。效果如:當表單縮小後,中間紅色的TextBlock被縮小,當然如果TextBlock的Width已經成0後,整體控制項變不回縮小(此時裁剪髮生)。當然注意當空間足夠大時,紅色TextBlock依然和後面Button緊貼著不會變大,這也是為什麼Grid無法解決這個問題。  寫了個小控制項:MyPanel,邏輯上等於一個橫向的StackPanel。不過通過MyPanel的IsCut附加屬性可以設定需要縮

[更新2]WPF:為ListBox添加和刪除資料加動畫效果

一年前寫過一篇文章:WPF:為ListBox添加和刪除資料加動畫效果,現在想到了一種更好的方法為ListBox資料的添加和刪除做動畫,訣竅就是做一個支援動畫的StackPanel。看了一篇非常好的文章:http://www.switchonthecode.com/tutorials/wpf-tutorial-creating-a-custom-panel-control,瞬間有了靈感。 這個StackPanel在Arrange的時候,首先設定子控制項的RenderTransform為Transl

WinRT XAML Toolkit: 體驗有趣的AsyncUI

在WinRT XAML Toolkit中發現另一個CodePlex中的架構AsyncUI。感覺很有意思,使用它可以用C# 5.0的async/await特性來等待介面上的事件。 比如這樣,介面上有一個Button的Name是btn,然後在Page的Loaded事件中可以這樣寫。//+ using WinRTXamlToolkit.AsyncUI;//Main_Loaded_1為Page的Loaded事件//主介面上有一個Name為btn的Buttonprivate async void

WPF: 自動化佈建Owner的ShowDialog

WPF中的Windows的ShowDialog方法並沒有提供設定Owner的參數,開發人員需要在ShowDialog前設定好Window的Owner屬性,正因為如此,許多時候你可能就忘了設定Owner,直接把對話方塊顯示出去了。這樣顯示的對話方塊看似沒有問題,但是當使用者在工作列切換表單或者切換至程式時,對話方塊會顯示在主表單後面,而此時主表單是不可點的!如果主表單可以覆蓋整個對話方塊(通常是這樣的),那麼此時使用者將會無法操作整個程式,這個問題在另一篇文章裡仔細討論過(WPF:更好得理解對話方

總頁數: 61357 1 .... 5173 5174 5175 5176 5177 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.