2015-06-12 9 views
5

से मेल नहीं खाता है मेरे पास Button के TargetType के लिए परिभाषित एक सरल बटन स्टाइल है; लेकिन शैली को बटन पर सेट करना एक निष्पादन देता है।लक्ष्य प्रकार टाइप तत्व

<Window> 
    <Window.Resources> 
     <Style x:Key="buttonStyle" TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="Magenta"/> 
     </Style> 
    </Window.Resources> 
    <StackPanel Orientation="Horizontal"> 
     <Button Content="1" FocusVisualStyle="{StaticResource buttonStyle}"/> 
    </StackPanel> 
</Window> 

अतिरिक्त जानकारी: 'बटन' TargetType तत्व 'नियंत्रण' के प्रकार से मेल नहीं खाता।


इसके अलावा, TargetTypeControl के रूप में स्थापित करने के रन-टाइम त्रुटि निकाल देता है, लेकिन जब यह Focus हो जाता है बटन के दृश्य शैली नहीं बदलता है।


शैली जब Button.Style


के रूप में सेट संपादित काम करता है मैं दो विशिष्ट प्रश्न हैं:

  1. मैं तथ्य यह है कि FocusVisualStyleFrameworkElement की संपत्ति है और करने के लिए सहमत FrameworkContentElement, लेकिन बटन पर इसे सेट करने में त्रुटि क्यों है, डी बावजूद तथ्य यह है कि शैली एक namedstyle और नहीं एक typedstyle है?

  2. FocusVisualStyleButton पर क्यों प्रदान नहीं किया जाता है? क्या Button.FocusVisualStyle टेम्पलेट्स, ट्रिगर्स या टेम्पलेट ट्रिगर्स जैसे किसी भी उच्च प्राथमिकता मूल्य से आंतरिक रूप से अधिक सवार है?

उत्तर

5

एक FocusVisualStyle आप जब एक नियंत्रण केंद्रित है उपयोगकर्ता के लिए दृश्य प्रतिक्रिया देने के लिए अनुमति देता है। उदाहरण के लिए, Rectangle जोड़ना जो नियंत्रण की सीमा की तरह दिखता है।

एक Style देखो और नियंत्रण खुद के लग रहा है। यह सब here समझाया गया है।

FocusVisualStyleButton के लिए शैली नहीं है, यह शैली है जब Button केंद्रित है।

अधिक जानकारी के लिए here देखें।

मुझे लगता है कि आप क्या कर रहे हैं Trigger है।

<Style x:Key="buttonStyle" TargetType="{x:Type Button}"> 
    <Style.Triggers> 
     <Trigger Property="IsFocused" Value="True"> 
      <Setter Property="Background" Value="Magenta"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

फिर, आप अपने Button की Style सेट कर सकते हैं, जैसे इतना:

<Button Style="{StaticResource buttonStyle}" ... /> 
+0

का अर्थ मैं मानता हूँ, लेकिन जब बटन ध्यान केंद्रित हो जाता है, अपनी शैली नहीं करता है बदल नहीं है या क्या मैं अवधारणा गलत कर रहा हूं? – Marshal

+1

स्पष्टीकरण के लिए, 'फोकस विज़ुअल स्टाइल' 'बटन' की शैली को प्रभावित नहीं कर सकता है। यह केवल 'बटन' की मौजूदा शैली में जोड़ता है। आपके पास जो समस्या है वह यह है कि आप 'बटन' शैली को 'फोकसविज़ुअल स्टाइल' पर सेट करने का प्रयास कर रहे हैं जो केवल 'नियंत्रण' शैली को स्वीकार करता है। मुझे उम्मीद है कि मैंने काफी अच्छी तरह समझाया है। –

+0

यह थोड़ी देर के लिए मेरे लिए काम नहीं कर रहा था क्योंकि मैं बटन नियंत्रण के लिए शैली की एक ही संपत्ति को स्थापित कर रहा था। ऑनलाइन संपत्ति मूल्य ओवरराइडिंग था जो शैली ट्रिगर "बटन स्टाइल" द्वारा सेट किया जाता है। मीठे जवाब! – RBT

1

आप इस

 <Style x:Key="buttonStyle" TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <Trigger Property="IsFocused" Value="True"> 
        <Setter Property="Background" Value="Magenta" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 

की तरह उपयोग करते हैं और इस तरह यह निर्धारित करना चाहिए:

  <Style x:Key="buttonStyle" TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Magenta" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 

From MSDN

:

<Button Content="1" Style="{StaticResource buttonStyle}"/> 

इस बेहतर देखने के लिए

फोकस दृश्य शैली सुविधा के लिए एक सामान्य "ऑब्जेक्ट मॉडल" प्रदान करती है जो किसी भी UI तत्व पर कीबोर्ड नेविगेशन के आधार पर दृश्य उपयोगकर्ता प्रतिक्रिया प्रस्तुत करती है। यह नियंत्रण, या विशिष्ट टेम्पलेट संरचना को जानने के लिए एक नया टेम्पलेट लागू किए बिना संभव है।

+0

लेकिन तब क्या FrameworkElement.FocusVisualStyle – Marshal

संबंधित मुद्दे