簡體   English   中英

具有DataTrigger的按鈕ControlTemplate中的樣式邊框

[英]Style Border in Buttons ControlTemplate with DataTrigger

我有以下元素:

<Button Click="btn_Click" Name="aName">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Border Name="tmpBorder" Padding="10">
                <TextBlock Text="General" />
            </Border>
            <ControlTemplate.Triggers>
                <DataTrigger Binding="{Binding doIt}" Value="someString">
                    <Setter TargetName="tmpBorder" Property="Background" Value="Red" />
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Button.Template>
</Button>

我的目標是在后面的代碼中將doIt設置為“ someString”的情況下,在ControlTemplate中設置Border元素的背景。 doIt是后面代碼中定義的類的公共成員,並將由btn_Click方法btn_Click

執行該方法並設置doIt可以正常工作,但是邊框的Background不會變為紅色。 我缺少重要的東西嗎?

這應該工作

<Button Click="btn_Click" Name="aName">
      <Button.Template>
           <ControlTemplate TargetType="Button">
               <Border Padding="10" Background="{TemplateBinding Background}">
                        <TextBlock Text="General" />
               </Border>
               <ControlTemplate.Triggers>
                        <DataTrigger Binding="{Binding doIt}" Value="someString">
                            <Setter  Property="Background" Value="Red" />
                        </DataTrigger>
               </ControlTemplate.Triggers>
           </ControlTemplate>
     </Button.Template>
</Button>

編輯 :由於第一種方法不起作用,請直接嘗試將樣式應用於邊框

如果您未在控件模板中設置背景等屬性,則使用觸發器進行的更改將不起作用

<Button Click="btn_Click" Name="aName">
      <Button.Template>
           <ControlTemplate TargetType="Button">
               <ControlTemplate.Resources>
                   <Style TargetType="{x:Type Border}">
                       <Setter Property="Background" Value="Transparent"/>
                       <Style.Triggers>
                           <DataTrigger Binding="{Binding doIt}" Value="someString">
                               <Setter Property="Background" Value="Red" />
                           </DataTrigger>
                       </Style.Triggers>
                   </Style>
               </ControlTemplate.Resources>
               <Border Padding="10" Background="{TemplateBinding Background}" Style>
                        <TextBlock Text="General" />
               </Border>
           </ControlTemplate>
     </Button.Template>
</Button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM