2014-10-18 53 views
0

我不知道如何在XAML中設置ContentPresenterMargin屬性的固定值。ContentPresenter的不同保證金屬性值取決於主題(XAML)

我正在使用Telerik WPF庫切換UI主題。一切看起來不錯,但當我切換到主題(Visual Studio 2013主題)時,按鈕的內容變得太小。

當我使用Snoop工具調查時,主題內部將ContentPresenter的保證金屬性更改爲較大的值,因此內容大小因此變小。

有沒有辦法在我的代碼中修復屬性值ContentPresenter我自己的(例如,修復值爲3),而不使用ControlTemplate塊? (如...風格二傳手ContentPresenter.Margin ...)

下面的代碼實際上是我想要的,但我不應該在我的代碼使用ControlTemplate塊...

<Button Width="100" Height="100"> 
    <Button.Content> 
     <Grid Background="Green"> 
      <Rectangle> 
       <Rectangle.Fill> 
        <DrawingBrush Stretch="Uniform"> 
         <DrawingBrush.Drawing> 
          <GeometryDrawing Geometry="M0,260 L0,600 L110,670 L110,500 L190,550 L190,710 L300,775 L300,430 L150,175"> 
           <GeometryDrawing.Pen> 
            <Pen Thickness="50" LineJoin="Round" Brush="Red"/> 
           </GeometryDrawing.Pen> 
          </GeometryDrawing> 
         </DrawingBrush.Drawing> 
        </DrawingBrush> 
       </Rectangle.Fill> 
      </Rectangle> 
     </Grid> 
    </Button.Content> 
    <Button.Template> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Border BorderBrush="Black" BorderThickness="1"> 
       <ContentPresenter Margin="3"/> 
      </Border> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 
+0

您是否嘗試設置'ContentPresenter'的默認樣式? – pushpraj 2014-10-18 06:21:39

回答

0

你應該能夠通過指定TargetType而不是x:Key來設置隱式樣式。

例如,下面應使Margin屬性等於3的任何ContentPresenterWindow內,除非另一個屬性setter具有更高DependencyPropertyPrecedence

<Window.Resources> 
    <Style TargetType="{x:Type ContentPresenter}"> 
     <Setter Property="Margin" Value="3" /> 
    </Style> 
</Window.Resources> 

如果有基本樣式方面要保存,可以使用BasedOn樣式屬性從基本樣式繼承所有其他屬性

<Style TargetType="{x:Type ContentPresenter}" 
     BasedOn="{StaticResource {x:Type ContentPresenter}}"> 

<Style TargetType="{x:Type ContentPresenter}" 
     BasedOn="{StaticResource BaseStyleKey}"> 
+0

嗨Rachel,謝謝你的評論。這真的很有幫助!但是......我可以告訴我爲什麼保證金在下面的代碼中不起作用嗎? \t 光標已被更改爲手。儘管保證金似乎沒有改變,但這很好。 – BK2im 2014-10-18 23:43:28