WPF

2013-05-08 6 views
6

में डेटा ट्रिगर सेट करने में समस्या मेरे पास मेरे मुख्य दृश्य पर ComboBox और Button है, और मैं बटन पर एक शैली लागू करना चाहता हूं जैसे कि जब combobox अनुक्रमणिका 1 पर सेट हो, बटन दिखाई देता है (प्रारंभ में यह छिपा हुआ है)।WPF

<Grid> 
    <StackPanel Orientation="Vertical" Margin="10"> 
     <ComboBox Name="comboBox"/> 

     <Button Name="myBtn" Content="Hello" Visibility="Hidden"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1"> 
          <Setter Property="Visibility" Value="Visible"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
     </Button> 
    </StackPanel> 
</Grid> 

किसी ने पहले ही इस here के बारे में प्रश्न पूछा बटन भी छिपा रहता है जब सूचकांक बदल गया है, और मैं बहुत ज्यादा एक ही बात कर रहा हूँ, लेकिन यह काम नहीं करता है, यह मेरी XAML कोड है 1 तक। कॉमोबॉक्स शुरू में 2 आइटम के साथ कोड में पॉप्युलेट किया जा रहा है। किसी भी मदद की सराहना की है।

उत्तर

15

समस्या यह है कि निर्भरता संपत्ति मूल्य स्थानीय रूप से सेट होते हैं (जैसे आपने दृश्यता के साथ किया है) एक स्टाइल ट्रिगर से सेट की गई उच्च प्राथमिकता है। ऐसे में, जब भी ट्रिगर मारा जाता है, तब भी वह मान आपके द्वारा सेट किए गए मान को ओवरराइड नहीं करेगा।

सरल समाधान के बजाय एक शैली Setter में डिफ़ॉल्ट मान सेट करने के लिए है:

<Button Name="myBtn" Content="Hello"> 
     <Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Setter Property="Visibility" Value="Hidden"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1"> 
         <Setter Property="Visibility" Value="Visible"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
    </Button> 

और अब आपके ट्रिगर से हिट करता है संपत्ति के मूल्य को पार कर जाएगी।

जब आप इसमें हों, तो आपको this link पर एक नज़र रखना चाहिए जो डीपी मानों को सेट करने के लिए प्राथमिकता क्रम सूचीबद्ध करता है।