2010-09-17 24 views
6

के रूप में बटन टॉगल करें मैं कई टॉगल बटन समूह करना चाहता हूं और उन्हें रेडियो बटन के रूप में व्यवहार करना चाहता हूं। तो क्या मैं अपनी XAML करने के लिए रेडियो बटन जोड़ने था और निम्नलिखित शैली बनाया:रेडियो बटन शैली

<Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="RadioButton"> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="FontSize" Value="12"/> 
    <Setter Property="Foreground" Value="White"/> 
    <Style.Triggers> 
    <Trigger Property="IsChecked" Value="True"> 
     <Setter Property="Background" Value="Red"/> 
    </Trigger> 
    </Style.Triggers> 
</Style> 

अब रेडियो बटन टॉगल बटन की तरह लग रही है, और शैली के फॉन्ट और अग्रभूमि गुण लागू होते हैं, लेकिन अगर मैं पर क्लिक करें टॉगल बटनों में से एक, पृष्ठभूमि लाल रंग में नहीं बदला जाता है। यदि मैं Ischecked के आधार पर अग्रभूमि बदलता हूं, तो यह काम करता है, लेकिन जब Ischecked सत्य है तो मैं पृष्ठभूमि को बदलने के लिए नहीं मिल सकता।

कोई विचार?

अद्यतन:

ऐसा लगता है कि डिफ़ॉल्ट ToggleButton शैली पृष्ठभूमि संपत्ति का उपयोग नहीं करता। मैं अपनी समस्या को हल करने के लिए अब नीचे दिए गए कोड का उपयोग कर रहा हूं। अगर कोई नीचे से कुछ भी गलत देखता है, तो कृपया मुझे बताएं।

<DataTemplate x:Key="RedBackground"> 
     <Grid Background="Red"> 
     <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Text="{Binding}"/> 
     </Grid> 
    </DataTemplate> 

    <Style TargetType="ToggleButton"> 
     <Style.Triggers> 
     <Trigger Property="IsChecked" Value="True"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
      <Setter Property="ContentTemplate" Value="{StaticResource RedBackground}"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
+0

यदि आप स्पष्ट रूप से 'पृष्ठभूमि' को 'रेडियो' पर अपने 'रेडियोबटन' पर सेट करते हैं, तो क्या यह वास्तव में काम करता है? –

+0

हां। रेडियो बटन पर पृष्ठभूमि = "लाल" सेट करना लाल पृष्ठभूमि के साथ एक टॉगल बटन प्रदर्शित करता है। – Flack

उत्तर

4

शैली आप उपयोग पर सब पर जब तक यह सेट किया गया है "उपयोगकर्ता द्वारा" आधारित कर रहे हैं Background संपत्ति है? यही है, क्या आप इस बिंदु तक टॉगल बटन के लिए शैली का उपयोग कर सकते हैं और वांछित प्रभाव प्राप्त करने के लिए पृष्ठभूमि को लाल रंग में स्पष्ट रूप से सेट कर सकते हैं?

शैली में ट्रिगर ठीक दिखता है, लेकिन कुछ शैलियों थीम्ड प्रतिपादन के लिए पृष्ठभूमि जैसे गुणों को अनदेखा करते हैं, इसलिए ट्रिगर में उन गुणों को सेट करना कुछ भी नहीं करता है।

एक अन्य संभावित कारण dependency property value precedence की धारणा है - जब कोई मान "स्थानीय रूप से" सेट होता है, तो मूल्य शैली में दिए गए ओवरराइड (यहां तक ​​कि यदि ट्रिगर के माध्यम से सेट किया जाता है)। तो यदि आपके <RadioButton> टैग में पृष्ठभूमि सेट है, तो ट्रिगर कुछ भी नहीं करेगा।

+0

अरे फिलिप। मैंने कुछ और खोज किया और ऐसा लगता है कि आप सही हैं। जिस शैली पर मैं बेसिंग कर रहा हूं वह पृष्ठभूमि की संपत्ति का उपयोग नहीं करता है। मैंने अपने प्रश्न को एक समाधान के साथ अपडेट किया। सहायता के लिए धन्यवाद। – Flack

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