【问题标题】:Button background based on the content Textblock text基于内容 Textblock 文本的按钮背景
【发布时间】:2016-10-12 12:12:56
【问题描述】:

我正在尝试根据TextBlock Text 设置Button 背景颜色。 TextBlockButtonContent 的一部分,并已绑定到 viewmodel 属性。

<Button Style="{StaticResource ButtonStyle}">
      <Button.Content>
            <StackPanel>
                  <TextBlock Text="Title" />
                  <TextBlock Text="{Binding SomeValue, Mode=OneWay}" />
            </StackPanel>
      </Button.Content>
</Button>

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
      <Setter Property="Template">
          <Setter.Value>
               <ControlTemplate TargetType="{x:Type Button}">
                     <Border Name="bd">
                          <ContentPresenter />
                     </Border>
                     <ControlTemplate.Triggers>
                         //HOW TO HERE...
                         <Trigger Property="Text" Value="SomeText 1">
                              <Setter TargetName="bd" Property="Background" Value="#b5e61d"/>  
                         </Trigger>
                         <Trigger Property="Text" Value="SomeText 2">
                              <Setter TargetName="bd" Property="Background" Value="#99d9ea"/>  
                         </Trigger>
                     </ControlTemplate.Triggers>
               </ControlTemplate>  
          </Setter.Value>
      </Setter>
 </Style>

【问题讨论】:

    标签: wpf xaml button


    【解决方案1】:

    我建议在Button的模板中包含标题TextBlock,然后根据Content值创建触发器:

    <Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Name="bd">
                        <StackPanel>
                            <TextBlock Text="Title" HorizontalAlignment="Center"/>
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
                        </StackPanel>
                    </Border>
    
                    <ControlTemplate.Triggers>
                        <Trigger Property="Content" Value="SomeText 1">
                            <Setter TargetName="bd" Property="Background" Value="#b5e61d"/>
                        </Trigger>
                        <Trigger Property="Content" Value="SomeText 2">
                            <Setter TargetName="bd" Property="Background" Value="#99d9ea"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
    <Button Style="{StaticResource ButtonStyle}" Content="{Binding SomeValue}" /> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2013-10-08
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多