2015-06-05 5 views
5

के अंदर एक टेक्स्टबॉक्स की बाध्य चौड़ाई मेरे पास एक छोटा सा मुद्दा है जिसे मैं सही नहीं लग रहा हूं। मैं एक पाठ बॉक्स जहाँ मैं जोड़ रहा "खोज संकेत"विजुअलब्रश

enter image description here

मैं इस XAML का उपयोग कर रहा स्निपेट

<TextBox x:Name="txtboxSearch" Height="22" Margin="3,35,111,0" TextWrapping="Wrap" VerticalAlignment="Top" BorderThickness="1" MaxLines="1" MaxLength="256" Grid.Column="2" BorderBrush="#FF828790"> 
     <TextBox.Style> 
      <Style TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
       <Style.Resources> 
        <VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None"> 
         <VisualBrush.Visual> 
          <TextBox Text="Search" Foreground="LightGray" FontStyle="Italic" /> 
         </VisualBrush.Visual> 
        </VisualBrush> 
       </Style.Resources> 
       <Style.Triggers> 
        <Trigger Property="Text" Value="{x:Static sys:String.Empty}"> 
         <Setter Property="Background" Value="{StaticResource CueBannerBrush}" /> 
        </Trigger> 
        <Trigger Property="Text" Value="{x:Null}"> 
         <Setter Property="Background" Value="{StaticResource CueBannerBrush}" /> 
        </Trigger> 
        <Trigger Property="IsKeyboardFocused" Value="True"> 
         <Setter Property="Background" Value="White" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 

है क्योंकि खिड़की की पृष्ठभूमि सफेद मैं एक परिणाम हो रही है नहीं है चित्र में दिखाया गया है। मैंने चौड़ाई को कई अलग-अलग तरीकों से बांधने की कोशिश की, लेकिन कुछ भी काम नहीं कर रहा है, क्या आप सुझाव दे सकते हैं?

मैं इसे इस तरह enter image description here

धन्यवाद देखने के लिए चाहते हैं!

+0

वास्तव में क्या आप प्राप्त करने की कोशिश कर रहे हैं? –

+0

विजुअलब्रश के अंदर एक टेक्स्टबॉक्स की चौड़ाई "textboxsearch" की चौड़ाई के समान है – Dude

उत्तर

2

ऐसा करने का तरीका मुख्य टेक्स्टबॉक्स माता-पिता (txtboxSearch) में CueBannerBrush (Your VisualBrush) में टेक्स्टबॉक्स की चौड़ाई को बांधना है।

बहरहाल, यह तभी काम करता है जब आप नियंत्रण या खिड़की संसाधनों में CueBannerBrush परिभाषा जगह, TextBox.Style संसाधनों में नहीं:

<Window.Resources> 
    <VisualBrush x:Key="CueBannerBrush" TileMode="Tile" Stretch="None" AlignmentX="Left" AlignmentY="Center" > 
     <VisualBrush.Visual> 
      <TextBox 
        Width="{Binding ElementName=txtboxSearch, Path=ActualWidth}" 
        HorizontalAlignment="Stretch" x:Name="txtboxWatermark" Text="Search" Foreground="LightGray" FontStyle="Italic"/> 
     </VisualBrush.Visual> 
    </VisualBrush> 
</Window.Resources> 

और फिर अपने मुख्य XAML सिर्फ एक ही है, लेकिन बिना विजुअलब्रश परिभाषा।

<Grid Background="Tomato"> 
    <TextBox x:Name="txtboxSearch" Height="22" Margin="3,35,111,0" TextWrapping="Wrap" VerticalAlignment="Top" BorderThickness="1" 
      MaxLines="1" MaxLength="256" Grid.Column="2" BorderBrush="#FF828790"> 
     <TextBox.Style> 
      <Style TargetType="TextBox"> 
       <Style.Triggers> 
        <Trigger Property="Text" Value="{x:Static sys:String.Empty}"> 
         <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />        
        </Trigger> 
        <Trigger Property="Text" Value="{x:Null}"> 
         <Setter Property="Background" Value="{StaticResource CueBannerBrush}" /> 
        </Trigger> 
        <Trigger Property="IsKeyboardFocused" Value="True"> 
         <Setter Property="Background" Value="White" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 
</Grid> 

अब आप इस शुरू में देखेंगे: :

और जब आप उसके अंदर क्लिक करें: :

+0

बस बढ़िया! धन्यवाद – Dude