2012-12-06 13 views
5

यह मुझे लड़ाकू चला रहा है। मेरे पास एक सरल WPF टॉगल बटन है, जिसमें Ischecked के लिए दो ट्रिगर्स हैं। मूल्य के लिए एक सत्य है, और दूसरा मूल्य गलत है। जब बटन चेक नहीं किया जाता है तो यह ठीक काम करता है, झूठी के लिए मेरी शैली लागू होती है; हालांकि, जब सिस्टम Ischecked सत्य है, तो सिस्टम शैली को कभी भी लागू नहीं करता है। यह हमेशा डिफ़ॉल्ट नीली क्रोम विंडोज शैली का उपयोग करता है। कोई विचार?डब्ल्यूपीएफ टॉगलबटन Ischecked ट्रिगर

<ToggleButton Content="Control 1" Width="200" Margin="0,0,0,10" Focusable="False"> 
    <ToggleButton.Resources> 
     <Style TargetType="{x:Type ToggleButton}"> 
      <Style.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
           <GradientStop Color="#FFF3F3F3" Offset="1"/> 
           <GradientStop Color="LawnGreen" Offset="0.307"/> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="IsChecked" Value="False"> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
           <GradientStop Color="#FFF3F3F3" Offset="1"/> 
           <GradientStop Color="Red" Offset="0.307"/> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ToggleButton.Resources> 
</ToggleButton> 

किसी भी मदद की सराहना की जाएगी। मुझे यकीन है कि यह कुछ स्पष्ट है कि मैं बस देख रहा हूं।

+0

मैंने आपके कोड को खाली ग्रिड में जोड़ने का प्रयास किया और यह ठीक काम करता है। क्या आपके पास वैश्विक स्टाइल संसाधन हैं जो आपके नियंत्रण को प्रभावित कर सकते हैं? या आप किस कंटेनर को इस बटन को जोड़ रहे हैं? –

+1

मुझे यकीन है कि नहीं। यह मेरे उपयोगकर्ता नियंत्रणों को घर बनाने के लिए एक नया नया। डीएल था, और मैंने अभी तक कोई संसाधन नहीं बनाया है। यही इसके बारे में इतना अजीब था। नीचे दी गई सिफारिश ने काम किया, लेकिन मुझे यकीन है कि मेरा संस्करण क्यों नहीं था। – Llaslo

उत्तर

15

लेआउट जब ToggleButton.IsChecked टॉगल टेम्पलेट का हिस्सा लगता है। यदि आप टेम्पलेट को ओवरराइड करते हैं, तो आप मानों को सही तरीके से सेट करने में सक्षम होना चाहिए। देखें Override ToggleButton Style

उदाहरण:

<ToggleButton Content="Control 1" Focusable="False"> 
    <ToggleButton.Template> 
     <ControlTemplate TargetType="{x:Type ToggleButton}"> 
     <Border CornerRadius="3" Background="{TemplateBinding Background}"> 
      <ContentPresenter Margin="3" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center"/> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsChecked" Value="True"> 
       <Setter Property="Background"> 
        <Setter.Value> 
        <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
         <GradientStop Color="#FFF3F3F3" Offset="1"/> 
         <GradientStop Color="LawnGreen" Offset="0.307"/> 
        </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
      <Trigger Property="IsChecked" Value="False"> 
       <Setter Property="Background"> 
        <Setter.Value> 
        <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
         <GradientStop Color="#FFF3F3F3" Offset="1"/> 
         <GradientStop Color="Red" Offset="0.307"/> 
        </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </ToggleButton.Template> 
    </ToggleButton> 
+0

धन्यवाद, यह चाल है। – Llaslo

3

मुझे पता है, मेरा उत्तर newb ने सुझाव दिया कोई नई बात नहीं है, लेकिन टेम्पलेट मेरे लिए बहुत सरल बनाया लगता है लाने के लिए। तो मैं ControlTemplate के अपने संस्करण का पर्दाफाश करता हूं। यह किसी के लिए उपयोगी हो सकता है।

<ToggleButton Width="100" Height="100"> 
    <ToggleButton.Template> 
     <ControlTemplate TargetType="{x:Type ToggleButton}"> 
      <Border BorderBrush="Orange" 
        BorderThickness="3" 
        CornerRadius="3" 
        Margin="1" 
        Name="Border" 
        Background="{TemplateBinding Background}"> 
       <Grid> 
        <Rectangle Name="FocusCue" 
          Visibility="Hidden" 
          Stroke="Black" 
          StrokeThickness="1" 
          StrokeDashArray="1 2" 
          SnapsToDevicePixels="True" ></Rectangle> 
        <ContentPresenter Margin="3" 
            HorizontalAlignment="Center" 
            VerticalAlignment="Center"/> 
       </Grid> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter TargetName="Border" Property="Background" Value="IndianRed" /> 
        <Setter TargetName="Border" Property="BorderBrush" Value="DarkKhaki" /> 
       </Trigger> 
       <Trigger Property="IsChecked" Value="False"> 
        <Setter TargetName="Border" Property="Background" Value="Red" /> 
        <Setter TargetName="Border" Property="BorderBrush" Value="Orange" /> 
       </Trigger> 
       <Trigger Property="IsKeyboardFocused" Value="True"> 
        <Setter TargetName="FocusCue" Property="Visibility" Value="Visible" /> 
       </Trigger> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter TargetName="Border" Property="Background" Value="DarkRed" /> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </ToggleButton.Template> 
</ToggleButton> 
संबंधित मुद्दे