none
关于TextBox Header的疑问 RRS feed

  • 问题

  • 我有一个很简单的需求。

    TextBox的header的前景色默认是白色的,我想把它修改为其他颜色。

    第一种方案:我直接修改TextBox的Foreground的属性 --- 失败,根本对Header不起作用

    第二种方案:代码如下:

    <TextBox TextWrapping="Wrap"
                             Height="auto"
                             IsReadOnly="True"
                        <TextBox.Header>
                            <TextBlock Text="网址"
                                       Foreground="Black/>
                        </TextBox.Header>
                    </TextBox>
    

    第二种方案运行时会产生异常:Exception {System.Runtime.InteropServices.COMException (0x80004005)} Message "Unspecified error\r\n" string

    我开始有了砸键盘的冲动,我只是想改个颜色而已。

    查阅MSDN,我写出了第三种方案:

    我在App.xaml中做如下定义:

            <SolidColorBrush x:Key="TextBoxForegroundHeaderThemeBrush"
                             Color="Black" />

    我想,这样总行了吧?Key都给你覆盖了你还不改变颜色?

    可是运行后的结果还是让我失望了。

    我想请教各位:如何修改这个Header的颜色呢?

    2015年3月9日 7:40

答案

  • 使用HeaderTemplate

    <TextBox x:Name="tb3" Text="" >
                    <TextBox.HeaderTemplate>
                        <DataTemplate>
                            <TextBlock Text="结果" Foreground="#99FB0404" />
                        </DataTemplate>
                    </TextBox.HeaderTemplate>
                </TextBox>

    • 已标记为答案 zhoumy 2015年3月11日 3:25
    2015年3月10日 9:58

全部回复

  • 使用HeaderTemplate

    <TextBox x:Name="tb3" Text="" >
                    <TextBox.HeaderTemplate>
                        <DataTemplate>
                            <TextBlock Text="结果" Foreground="#99FB0404" />
                        </DataTemplate>
                    </TextBox.HeaderTemplate>
                </TextBox>

    • 已标记为答案 zhoumy 2015年3月11日 3:25
    2015年3月10日 9:58
  • 非常感谢。这样的确可行。 不过我觉得仅仅是想改个颜色,使用数据模板会不会太重量级了呢

    825386224@qq.com

    2015年3月10日 13:45
  • 使用HeaderTemplate

    <TextBox x:Name="tb3" Text="" >
                    <TextBox.HeaderTemplate>
                        <DataTemplate>
                            <TextBlock Text="结果" Foreground="#99FB0404" />
                        </DataTemplate>
                    </TextBox.HeaderTemplate>
                </TextBox>

    非常感谢。这样的确可行。 不过我觉得仅仅是想改个颜色,使用数据模板会不会太重量级了呢

    825386224@qq.com

    2015年3月10日 13:45