为TextBox标头应用自定义模板

时间:2015-04-09 13:10:45

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

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

我一直在格式化/模板化文本框的标题。 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>

是否只有一种方法可以配置使用的主题或实现标题模板的方法?

2 个答案:

答案 0 :(得分:0)

如果您需要在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,请为其提供密钥

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

并适用于相关的TextBox

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

希望有所帮助

答案 1 :(得分:0)

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

  <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>

它有效,所以我认为绑定中的内容是空的,看起来不起作用。