2010-09-30 15 views
9

मैं एक डब्ल्यूपीएफ टेक्स्टबॉक्स में एक डार्कब्लू सीमा और मोटाई 1 के बराबर बनाना चाहता हूं। मैं चाहता हूं कि WPB को यह सीमा (डार्कब्लू, मोटाई 1 तक सेट करें) जब टेक्स्टबॉक्स का चयन किया जाए।डब्ल्यूपीएफ टेक्स्टबॉक्स सीमा?

मैंने निम्नलिखित कार्य द्वारा इस कार्य को करने का प्रयास किया। हालांकि, यह बिल्कुल काम नहीं करता है। कोई विचार या संकेत? किसी भी तरह की सहायता का स्वागत किया जाएगा।

<Style x:Key="ReadOnlyLargeTextBox" TargetType="{x:Type TextBox}" > 
     <Setter Property="Height" Value="80"/> 
     <Setter Property="MaxHeight" Value="80"/> 

     <Setter Property="VerticalScrollBarVisibility" Value="Visible"/> 
     <Style.Triggers> 
      <Trigger Property="TextBox.IsMouseOver" Value="True"> 
       <Setter Property="BorderBrush" Value="DarkBlue"/> 
       <Setter Property="BorderThickness" Value="1"/> 
      </Trigger> 
      <Trigger Property="TextBox.IsMouseOver" Value="False"> 
       <Setter Property="BorderBrush" Value="DarkBlue"/> 
       <Setter Property="BorderThickness" Value="1"/> 
      </Trigger> 
     </Style.Triggers> 


    </Style> 

पी.एस ध्यान दें कि पाठ बॉक्स एक IsSelected संपत्ति नहीं है।

+2

"यहां तक ​​कि जब टेक्स्टबॉक्स चुना जाता है": आपका क्या मतलब है? जब टेक्स्टबॉक्स चुना जाता है तो सीमा बदलती नहीं है, इसलिए आपको ट्रिगर्स की बिल्कुल आवश्यकता नहीं है ... बस सेटर्स को शैली में रखें –

उत्तर

20

सिर्फ देखना

<Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{x:Type TextBox}"> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="AllowDrop" Value="true"/> 
     <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border x:Name="bg" BorderBrush="#FF825E5E" BorderThickness="1"> 
         <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
         </Border> 
        <ControlTemplate.Triggers> 

         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="BorderBrush" TargetName="bg" Value="DarkBlue"/> 
          <Setter Property="BorderThickness" TargetName="bg" Value="2"/> 
         </Trigger> 
         <Trigger Property="IsFocused" Value="True"> 
          <Setter Property="BorderBrush" TargetName="bg" Value="DarkBlue"/> 
          <Setter Property="BorderThickness" TargetName="bg" Value="2"/> 
         </Trigger> 

        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
1

आपके पास "IsMouseOver" के साथ-साथ गलत होने पर भी वही तर्क है। एक बदलें और आपको कुछ देखना चाहिए।

2

फ्रेमवर्क एलिमेंट ऑब्जेक्ट (टेक्स्टबॉक्स के पूर्वजों) की संपत्ति FocusVisualStyle की जांच करें। इसका उद्देश्य किसी तत्व का चयन होने पर शैली को परिभाषित करना है।

4

मुझे लगता है कि तुम्हारी समस्या पाठ बॉक्स युक्त उत्प्रेरक संपत्ति मूल्य होने की वजह से है यह आप चाहते हैं है ...। आपको बस संपत्ति के नाम की आवश्यकता है।

<Style x:Key="ReadOnlyLargeTextBox" TargetType="{x:Type TextBox}"> 
     <Setter Property="Height" Value="80"/> 
     <Setter Property="MaxHeight" Value="80"/> 

     <Setter Property="VerticalScrollBarVisibility" Value="Visible"/> 

     <Style.Triggers> 
      <Trigger Property="IsFocused" Value="True"> 
       <Setter Property="BorderBrush" Value="Blue"/> 
       <Setter Property="BorderThickness" Value="1"/> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="BorderBrush" Value="Blue"/> 
       <Setter Property="BorderThickness" Value="1"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
संबंधित मुद्दे