2012-07-30 1 views
3

간단한 문제가 있지만 Silverlight를 처음 사용했습니다.텍스트 상자의 배경 문제 해결

텍스트 상자가 투명하지만 초점이 맞으면 텍스트 필드 배경이 흰색으로 표시됩니다.

해결 방법은 무엇입니까? 당신이 설명하는 무엇

enter image description here enter image description here

+0

CSS로 렌더링 할 수 있습니까? – gooddadmike

+0

텍스트 필드에 클릭 핸들러를 추가하여 사용자가 클릭 할 때 배경을 투명하게 설정할 수 있습니다. MVVM을 사용하고 있습니까? 당신은 그것을 위해 Commanding을 사용하기를 원할 것입니다. 그렇지 않은 경우 코드 숨김으로 이동하십시오. –

답변

0

는 비주얼 상태입니다.

텍스트 상자에 포커스가 있으면 내부적으로 시각적 상태 변경이 트리거되며이 경우에는 흰색 배경이 포함됩니다.

WP7에서 작업하는 것처럼 보이므로 컨트롤 템플릿, 스타일 및 변경 방법에 대해 배우기 시작할 수있는 몇 가지 장소가 있습니다.

먼저 제어 템플릿에 대해 this article을 확인하십시오.

Silverlight 4와 관련된 것이 무엇이든 관련이 있습니다.

두 번째 get a copy of Expression Blend for Windows Phone. 새로운 WP7 프로젝트를 시작하고 TextBox를 디자인 화면으로 드래그하고 TextBox를 마우스 오른쪽 단추로 클릭 한 다음 템플릿 편집을 선택하십시오. 그런 다음 시각 상태를 변경하는 것이 얼마나 쉬운지를 알기 시작할 것입니다.

3
당신은 단지 하나 기본 컨트롤 템플릿의 VisualStateManager에서 "FocusedState"를 편집하거나 리소스 사전 중 하나에 아래에 제공된 것과 같은 또는 등 당신의 UserControl.Resources

여기에 자신을 제공해야

조정 적절한 장소에 기본 WP7 텍스트 상자 스타일 템플릿 ... 어떻게 당신이 당신의 텍스트 상자 인스턴스 여기

<TextBox Style="{StaticResource YourCustomTextBoxStyle}/> 

아래의 스타일 템플릿을 적용 할 것입니다

<Style x:Key="YourCustomTextBoxStyle" TargetType="TextBox"> 
      <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/> 
      <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/> 
      <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/> 
      <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/> 
      <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/> 
      <Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}"/> 
      <Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}"/> 
      <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/> 
      <Setter Property="Padding" Value="2"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="TextBox"> 
         <Grid Background="Transparent"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="MouseOver"/> 
            <VisualState x:Name="Disabled"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBorder"> 
               <DiscreteObjectKeyFrame KeyTime="0"> 
                <DiscreteObjectKeyFrame.Value> 
                 <Visibility>Collapsed</Visibility> 
                </DiscreteObjectKeyFrame.Value> 
               </DiscreteObjectKeyFrame> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledOrReadonlyBorder"> 
               <DiscreteObjectKeyFrame KeyTime="0"> 
                <DiscreteObjectKeyFrame.Value> 
                 <Visibility>Visible</Visibility> 
                </DiscreteObjectKeyFrame.Value> 
               </DiscreteObjectKeyFrame> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="ReadOnly"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBorder"> 
               <DiscreteObjectKeyFrame KeyTime="0"> 
                <DiscreteObjectKeyFrame.Value> 
                 <Visibility>Collapsed</Visibility> 
                </DiscreteObjectKeyFrame.Value> 
               </DiscreteObjectKeyFrame> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledOrReadonlyBorder"> 
               <DiscreteObjectKeyFrame KeyTime="0"> 
                <DiscreteObjectKeyFrame.Value> 
                 <Visibility>Visible</Visibility> 
                </DiscreteObjectKeyFrame.Value> 
               </DiscreteObjectKeyFrame> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledOrReadonlyBorder"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledOrReadonlyBorder"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledOrReadonlyContent"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxReadOnlyBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="FocusStates"> 
            <VisualState x:Name="Focused"/> <!-- *** Right here is your culprit, I just ripped out the FocusedState Storyboard so it doesnt do anything when focused. *** --> 

            <VisualState x:Name="Unfocused"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Border x:Name="EnabledBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="{StaticResource PhoneTouchTargetOverhang}"> 
           <ContentControl x:Name="ContentElement" BorderThickness="0" HorizontalContentAlignment="Stretch" Margin="{StaticResource PhoneTextBoxInnerMargin}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch"/> 
          </Border> 
          <Border x:Name="DisabledOrReadonlyBorder" BorderBrush="{StaticResource PhoneDisabledBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" Margin="{StaticResource PhoneTouchTargetOverhang}" Visibility="Collapsed"> 
           <TextBox x:Name="DisabledOrReadonlyContent" Background="Transparent" Foreground="{StaticResource PhoneDisabledBrush}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" IsReadOnly="True" SelectionForeground="{TemplateBinding SelectionForeground}" SelectionBackground="{TemplateBinding SelectionBackground}" TextAlignment="{TemplateBinding TextAlignment}" TextWrapping="{TemplateBinding TextWrapping}" Text="{TemplateBinding Text}" Template="{StaticResource PhoneDisabledTextBoxTemplate}"/> 
          </Border> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

BasedOn 값을 사용하여이 템플릿을 모든 TextBox 컨트롤에 적용 할 수도 있습니다.

이 작업을 수행하는 다른 방법은 적지 만 기본 학습을 시작하기에 좋습니다. 희망이 도움이됩니다.

+0

다른 답변이 정확하다고 표시되면 내 답변을 추가해야합니다. 불쌍하지만, 당신이 구제 수단을 찾게되어 기쁘다! :) –

2

더 쉬웠습니다!

private void TextBox1_GotFocus(object sender, RoutedEventArgs e) 
    { 
     TextBox tb = (TextBox)sender; 
     tb.Background = new SolidColorBrush(Colors.Transparent); 
     tb.BorderBrush = new SolidColorBrush(Colors.Transparent); 
     tb.SelectionBackground = new SolidColorBrush(Colors.Transparent); 
    } 

    private void TextBox1_LostFocus(object sender, RoutedEventArgs e) 
    { 
     TextBox tb = (TextBox)sender; 
     tb.Background = new SolidColorBrush(Colors.Transparent); 
     tb.BorderBrush = new SolidColorBrush(Colors.Transparent); 
     tb.SelectionBackground = new SolidColorBrush(Colors.Transparent); 
    } 

그리고 잘 작동합니다!

+0

이것은 나를 위해 일했다! 너무 쉽게! 건배! :) –

관련 문제