【问题标题】:XAML Textbox Border when ReadyOnlyReadyOnly 时的 XAML 文本框边框
【发布时间】:2014-11-20 15:40:50
【问题描述】:

我在下面的链接中遇到了同样的问题。对此没有答案。 1年前就问过了

XAML textbox border goes away when changing isreadonly?

有人可以帮助我吗?这是我现有的文本框 CSS

<Style TargetType="TextBox" x:Key="StandardTextBox">
    <Style.Resources>
        <fawgCommon:ControlBackgroundConverter x:Key="BackgroundConverter" />
    </Style.Resources>
    <Setter Property="telerik:StyleManager.Theme" Value="{DynamicResource Theme}"/>
    <Setter Property="Background">
        <Setter.Value>
            <MultiBinding Converter="{StaticResource BackgroundConverter}">
                <Binding />
                <Binding Mode="OneTime"/>
            </MultiBinding>
        </Setter.Value>
    </Setter>
    <Setter Property="Foreground" Value="{DynamicResource CurrentThemeForegroundBrush}" />
    <Setter Property="CaretBrush" Value="{DynamicResource CurrentThemeForegroundBrush}" />
</Style>

【问题讨论】:

  • 如果问题相同,则需要正确标记您的问题,WPF 标记不适用于 WinPhone 问题。

标签: wpf xaml


【解决方案1】:

不知道为什么这可能是一个问题,但在一个基本的演示中,您可以使用一些触发器来监听IsReadOnly 并正常设置文本框的边框:

<TextBox IsReadOnly="True"  BorderThickness="1">
    <TextBox.Style>
       <Style TargetType="TextBox">
          <Style.Triggers>
             <Trigger Property="IsReadOnly" Value="True">
                <Setter Property="BorderBrush" Value="Blue"/>                    
             </Trigger>
          </Style.Triggers>
       </Style>
    </TextBox.Style>
</TextBox>

上面的例子最初将IsReadOnly设置为true,所以会显示一些蓝色边框。

更新

对于您发布的代码,应该是这样的:

<Style TargetType="TextBox" x:Key="StandardTextBox">
  <Style.Resources>
    <fawgCommon:ControlBackgroundConverter x:Key="BackgroundConverter" />
  </Style.Resources>
  <Style.Triggers>
     <Trigger Property="IsReadOnly" Value="True">
         <Setter Property="BorderBrush" Value="Blue"/>
         <Setter Property="BorderThickness" Value="1"/>
     </Trigger>
  </Style.Triggers>
  <Setter Property="telerik:StyleManager.Theme" Value="{DynamicResource Theme}"/>
  <Setter Property="Background">
    <Setter.Value>
        <MultiBinding Converter="{StaticResource BackgroundConverter}">
            <Binding />
            <Binding Mode="OneTime"/>
        </MultiBinding>
    </Setter.Value>
  </Setter>
  <Setter Property="Foreground" 
          Value="{DynamicResource CurrentThemeForegroundBrush}" />
  <Setter Property="CaretBrush" 
          Value="{DynamicResource CurrentThemeForegroundBrush}" />
</Style>

【讨论】:

  • 我在上面添加了我的代码。你能帮我修复上面的代码吗?
  • 我之前自己尝试过。它不工作。但有趣的是,如果我点击文本框,边框就会出现,如果我点击另一个文本框,边框就会消失
  • @WPFRookie 我也先尝试了代码,它几乎可以工作。当鼠标在TextBox上时,Border会淡出一点(可能是默认动画造成的)。我无法重现您描述的行为。你的 TextBox 只是一个标准的,没有任何其他代码(除了你发布的)吗?
  • Kong 是的,它的标准文本框,它没有任何其他代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多