【问题标题】:Applying a Custom Template for TextBox Header为文本框标题应用自定义模板
【发布时间】:2015-04-09 13:10:45
【问题描述】:

我正在开发一个 Windows Phone 应用程序,我的要求包括使用特定的颜色主题,而不是使用手机的默认主题(浅色/深色/等)。

我一直在格式化/模板化文本框的标题。 app.xaml 中的以下代码不起作用:

<DataTemplate x:Key="HeaderTemplate">
    <TextBlock Text="{Binding}" Foreground="Black"/>
</DataTemplate>

<Style TargetType="TextBox">
    <Setter Property="Foreground" Value="#FFBBB8B8"/>
    <Setter Property="BorderBrush" Value="LightGray"/>
    <Setter Property="HeaderTemplate" Value="{StaticResource HeaderTemplate}"/>
</Style>

有没有办法只配置使用的主题或实现标题模板的方法?

【问题讨论】:

  • 您有 WP Silverlight 或 WP 8.1(及以下)项目吗?只有后者具有Header 属性。什么在您的代码中不起作用?我测试它并没有问题。 PS:应用开发与WPF无关。
  • @Koopakiller 你说得对,上面的代码确实有效,所以不确定问题

标签: c# wpf xaml windows-phone-8


【解决方案1】:

如果您需要在Page 上实现模板

<Page.Resources>
    <Style TargetType="TextBox">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid>
                        <TextBlock Text="{Binding}" Foreground="Red" />
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>
<StackPanel>
    <TextBox x:Name="TextBox" Width="300" Height="80"
             Margin="20" Header="Headline"/>
    <TextBox x:Name="TextBox2" Width="300" Height="80"
             Margin="20" Header="Headline2"/>
</StackPanel>

或者,如果您希望 Style 应用于某些 TextBox,请给它一个 Key

<Style TargetType="TextBox" x:Key="MyTextBoxStyle">

并申请相关TextBox

<TextBox x:Name="TextBox2" Width="300" Height="80"
         Margin="20" Header="Headline2" 
         Style="{StaticResource MyTextBoxStyle}"/>}"/>

希望有帮助

【讨论】:

    【解决方案2】:

    我测试了以下内容真的很奇怪:

      <Application.Resources>
            <Style  TargetType="TextBox" >
                <Setter Property="Foreground" Value="#FFBBB8B8"/>
                <Setter Property="BorderBrush" Value="LightGray"/>
                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock Foreground="Red" Text="testing"/>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    
            <DataTemplate x:Key="DT1">
                <TextBlock Foreground="Green" Text="testing"/>
            </DataTemplate>
    
            <Style  TargetType="TextBox" x:Key="TextBoxStyle2">
                <Setter Property="Foreground" Value="#FFBBB8B8"/>
                <Setter Property="BorderBrush" Value="LightGray"/>
                <Setter Property="HeaderTemplate" Value="{StaticResource DT1}"/>
            </Style>
    </Application.Resources>
    

    在主页中

    <Grid>
        <TextBox  Text="testing"/>
        <TextBox Margin="0,100,0,0" Style="{StaticResource TextBoxStyle2}" Text="testing"/>
    </Grid>
    

    它可以工作,所以我认为绑定的内容是空的,并且似乎不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      相关资源
      最近更新 更多