VS2012 DesignTime 笔记

在 VS2012 DesignTime中,对于通过PropertyValueEditor弹出的Dialog,是不会引用IDE的Theme Setting。

在我们做自定义Dialog时,如何做到同样的效果呢,有两种办法:

1. 使用 DialogPropertyValueEditor + DialogTemplate,这样弹出的Dialog就不会使用IDE的Theme

2. 自定义Dialog,该Dialog.DialogContent 是个Border,并且这个Border.Style应用 “DialogRootContainer” resource,DialogRootContainer定义在 Microsoft.Expression.DesignSurface + userinterface/propertyinspector/propertyinspectorresources.baml 里面,xaml sample 如下

< d:Dialog  x:Class ="CustomControlLibrary.Design.MyDialog"
        xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d
="clr-namespace:Microsoft.Expression.Utility.Controls;assembly=Microsoft.Expression.Utility"
        Title
="MyDialog"  Height ="300"  Width ="300" >
     < Border  FrameworkElement.Style =" {DynamicResource DialogRootContainer} "  KeyboardNavigation.TabNavigation ="Cycle" >
            < StackPanel  >
             < TextBox >ccc1231245 </ TextBox >
         </ StackPanel >
     </ Border >

</d:Dialog> 

这个人有几点注意:

1.  DialogRootContainer会打断全局Style,所以如果想对Dialog内部的UIElemnt应用Style,请定义在Border以内,不要定义在dialog层

2. 不要加针对于 Microsoft.Expression.DesignSurface + userinterface/propertyinspector/propertyinspectorresources.baml 的resource

 

 

你可能感兴趣的:(design)