禁用TextBox样式

时间:2014-06-06 06:19:01

标签: c# textbox windows-runtime styles

我在Path-Element上创建了一个TextBox(Path Element绘制了一个矩形的东西,它充当了文本框的设计)。现在我想用

禁用这个TextBox
valCon.ValueTextBox.IsEnabled = false;

到目前为止这是有效的。但是,由于我不希望TextBox有任何样式(没有颜色,没有边框等),但只有一个可见的文本,我遇到了一个小问题:

当禁用TextBox时,它会自动收到我无法摆脱的样式。背景变为白色,不透明度变为0.3左右,并出现边框。

我似乎无法通过添加

来解决这个问题
valcon.ValueTextBox.Background = new SolidColorBrush(Colors.Transparent);
valcon.ValueTextBox.BorderBrush = new SolidColorBrush(Colors.Transparent); 

似乎忽略了这一点。有谁知道解决方案?

问候 Narakuvera

1 个答案:

答案 0 :(得分:1)

您需要控制模板才能实现相同的

这里是一个基本模板,没有边框,没有背景TextBox

    <TextBox Text="hello">
        <TextBox.Template>
            <ControlTemplate TargetType="TextBox">
                <ScrollViewer Margin="0"
                              x:Name="PART_ContentHost" />
            </ControlTemplate>
        </TextBox.Template>
    </TextBox>

您可以选择设置IsEnabled="False",它仍然会保持较少的边框

代码隐藏方法

        ControlTemplate ct = new ControlTemplate(typeof(TextBox));
        FrameworkElementFactory sv = new FrameworkElementFactory(typeof(ScrollViewer));
        sv.Name = "PART_ContentHost";
        ct.VisualTree = sv;
        textbox1.Template = ct;

WinRT代码隐藏方法

        string template = "<ControlTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" TargetType=\"TextBox\"><ScrollViewer Name=\"PART_ContentHost\" /></ControlTemplate>";
        ControlTemplate сt = (ControlTemplate)XamlReader.Load(template);
        textbox1.Template = сt;