C# 禁用的文本框样式

C# 禁用的文本框样式,c#,textbox,windows-runtime,styles,C#,Textbox,Windows Runtime,Styles,我在Path元素上方创建了一个文本框(Path元素绘制了一个矩形对象,它充当文本框的设计)。现在我想禁用此文本框与 valCon.ValueTextBox.IsEnabled = false; 到目前为止,这是可行的。但是,由于我不希望文本框具有任何样式(无颜色、无边框等),而只包含可见文本,因此我遇到了一个小问题: 当文本框被禁用时,它会自动接收一个我无法摆脱的样式。背景变为白色,不透明度变为0.3左右,并显示边框 我似乎无法通过添加 valcon.ValueTextBox.Backgrou

我在Path元素上方创建了一个文本框(Path元素绘制了一个矩形对象,它充当文本框的设计)。现在我想禁用此文本框与

valCon.ValueTextBox.IsEnabled = false;
到目前为止,这是可行的。但是,由于我不希望文本框具有任何样式(无颜色、无边框等),而只包含可见文本,因此我遇到了一个小问题:

当文本框被禁用时,它会自动接收一个我无法摆脱的样式。背景变为白色,不透明度变为0.3左右,并显示边框

我似乎无法通过添加

valcon.ValueTextBox.Background = new SolidColorBrush(Colors.Transparent);
valcon.ValueTextBox.BorderBrush = new SolidColorBrush(Colors.Transparent); 
等等

它似乎忽略了这一点。有人知道解决办法吗

问候
Narakuvera

您需要控制模板以实现同样的效果

这是一个基本的模板,没有边框和背景文本框

    <TextBox Text="hello">
        <TextBox.Template>
            <ControlTemplate TargetType="TextBox">
                <ScrollViewer Margin="0"
                              x:Name="PART_ContentHost" />
            </ControlTemplate>
        </TextBox.Template>
    </TextBox>
WinRT代码隐藏方法

        ControlTemplate ct = new ControlTemplate(typeof(TextBox));
        FrameworkElementFactory sv = new FrameworkElementFactory(typeof(ScrollViewer));
        sv.Name = "PART_ContentHost";
        ct.VisualTree = sv;
        textbox1.Template = ct;
        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;
字符串模板=”;
ControlTemplateСt=(ControlTemplate)XamlReader.Load(模板);
textbox1.Template=Сt;

您是否在XAML中的
文本框中定义了样式?在代码隐藏中设置这些值不是最好的主意。尝试在XAML中更改您的视图。您想永久禁用文本框,还是想在某些事件中禁用它?@nakiya不,我没有在XAML中定义文本框的样式,因为我使用文本框的控件是动态的,这意味着我需要对代码进行大量计算和更改。@我不想永久使用它。@user3701907那么为什么需要文本框呢。您可以使用标签或文本块谢谢您的回答。然而,我只想在代码隐藏中实现这一点。在这种情况下,XAML不是我的选择。有没有可能在codebehind中实现您刚才所做的?是的,您可以使用codebehind实现同样的效果,让我试着将其转换为codebehind。@pushpraj不起作用。FrameworkElementFactory不存在,ControlTemplate.VisualTree也不存在。此外,Windows.UI.Xaml.Controls.ControlTemplate不接受任何参数。也许我们用的是不同的版本?无论如何,我理解这个原理,所以我可以在VS2013中为Win8.1重新创建它。非常感谢!:)<代码>System.Windows;&System.Windows.Controls
是WPFSystem.Windows.Controls中这些元素的命名空间;似乎不存在,我找不到任何参考资料/