WPF自定義控件WPF自定義控件構造,觸發器和事件
我想構建一個新的自定義控件。我發現很少的教程給了我一些關於如何實現這一點的線索。據我所知,創建一個新的自定義控件總是通過擴展當前控件來完成的,甚至可以從層次結構的基本級別擴展控件,例如,甚至可以擴展:
- 的UIElement
- FrameworkElement的
- 控制
- ContentControl中
- HeaderedContentControl
- 的ItemsControl
- 選擇
- RangeBase
寫在下面的教程:http://wpftutorial.net/HowToCreateACustomControl.html
所以,我也跟着教程和創造型自定義控件庫的一個新的項目,得到了我的通用的.xaml和我的代碼背後。到現在爲止還挺好。
有三種類型或類別的事件我可以區分。
活動是由窗口(或容器),將用我的控制耗材:這些都是我想暴露於外的事件。如何寫這些?
與控制本身相關且未暴露於外部的事件;例如, ,如果鼠標超過了我的控制範圍,我想對此作出反應 。我能做到的是,在XAML:
<ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property="Fill" TargetName="LeftTraingularIndicator"> <Setter.Value> <SolidColorBrush Color="Yellow" /> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers>
假設淡然的我有填充屬性在我 ControlTemplate中被命名爲X的元素:
問題NAME = 「LeftTraingularIndicator」:
現在我想在我的XAML中對IsMouseDown做出反應。我怎麼做? 沒有「IsMouseDown」觸發器。此外,如果我想讓 對後面的代碼做出反應呢?甚至更進一步如果我想要 將LeftTraingularIndicator「Fill」從後面的代碼改成什麼?
- 該相關如果我想在反應「LeftTraigularIndicator」的 爲「IsMouseOver」什麼子元件,其是視覺 施工我的ControlTemplate的一部分,例如,在活動XAML /甚至在代碼隱藏? 也許甚至兩個。
我現在正在嘗試2天...感覺我錯過了我對事物工作原理的理解。沒有找到任何深入解釋這些問題的教程。
我希望看到我在這裏提出的每個問題的幾行例子。
謝謝。
你唯一不能與用戶控件做將它們用作窗口基類。這使得編寫窗口模板非常痛苦。 – rookie1024 2016-07-01 17:35:09
對於3,如果您在Generic.xaml中應用了模板,則可以通過重寫'OnApplyTemplate()'來獲取任何命名的部分,因爲只有包含部分的模板已經設置,纔會運行該模板。 – Lauraducky 2017-12-20 00:02:40