我已經遵循了CodeProject上的DiagramDesigner示例,以瞭解如何在WPF中使用裝飾器,因爲它相對比較符合我的一些需求。訪問XAML定義樣式中的元素
我已經適應了一些實現,並且還添加了我自己的裝飾器,通過滑塊(裝飾器上的滑塊)控制控件的不透明度。
按照與作者相同的方法,我將滑塊和其他功能放置在xaml樣式定義文件中,如下所示。我現在正在掙扎A)想出如何在任何級別訪問滑塊,B)如何最好地開始將它與底層Viewmodel掛鉤,這將用於各種設置(在裝飾者上)。
<Style x:Key="OpacityAdorner" TargetType="{x:Type adorners:OpacityChrome}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type adorners:OpacityChrome}">
<Grid>
<Slider x:Name="OpacitySlider" Style="{StaticResource OpacityControl}" ToolTip="Alter the opacity of the image to overlay with other images" Visibility="Collapsed"/>
<Ellipse x:Name="OpacitySliderEnable" Style="{StaticResource OpacityIcon}" ToolTip="Alter the visual opacity of the image" Visibility="Visible"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
CodeProject上的例子是在這裏http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part
感謝您的支持。它有幫助。儘管如此,我仍然有點痛苦。我想在構建裝飾器時獲取滑塊,以便掛鉤事件以附加到依賴項屬性。但是,在此階段,ApplyTemplate()仍不適用模板,並且模板仍然爲空。我必須破解一些可行的事情。有沒有一種方法可以在裝飾器中覆蓋,所以我會知道該模板已經應用了? (OnApplyTemplate也沒有作品) – Zief 2015-02-24 10:49:14
OnInitialized()實際上工作。不太喜歡這種必須在OnInitialized中手動連接Adorner中的控件/事件的方法,但似乎沒有太多辦法可以看到 – Zief 2015-02-24 11:25:10
而我仍然需要在嘗試之前ApplyTemplate() Template.FindName,或者在OnInitialized達到代碼時,Template是否爲null – Zief 2015-02-24 13:44:51