2011-08-30 21 views
18

में एक बटन की सामग्री सेट मैं एक WPF बटन इस तरह परिभाषित किया गया है:शैली

<Button Style="{StaticResource RevertButtonStyle}" /> 

यहाँ कैसे शैली लग रहा है:

<Style x:Key="RevertButtonStyle" TargetType="{x:Type Button}"> 
    <Setter Property="Height" Value="25" /> 
    <Setter Property="Width" Value="20" /> 
    <Setter Property="Margin" Value="3,0,0,0" /> 
</Style> 

मैं कैसे करने के लिए सामग्री निर्दिष्ट करने के लिए शैली बदल सकता हूँ "revert.png" नामक एक छवि का उपयोग करें?

धन्यवाद,

उत्तर

26

आप Image नियंत्रण का एक उदाहरण के लिए सामग्री गुण सेट तो के रूप में छवि एक से अधिक बटन द्वारा इस्तेमाल किया जा सकता का उपयोग नहीं कर सकते हैं। इसका परिणाम "दृश्य पहले से ही एक और दृश्य का बच्चा" अपवाद होगा।

इसके बजाय, आप तो जैसे एक DataTemplate का उपयोग कर सकते हैं:

<Setter Property="ContentTemplate"> 
    <Setter.Value> 
     <DataTemplate> 
      <Image Source="revert.png" /> 
     </DataTemplate> 
    </Setter.Value> 
</Setter> 

जाहिर है आप छवि के स्रोत यूआरआई समायोजित करने की आवश्यकता हो सकती है।

+0

एक आकर्षण की तरह काम किया। धन्यवाद। – sean717

+0

यह तुरंत मुझे मदद की - मैं एक पथ मैं एक शैली में बटन सामग्री के रूप में स्थापित करने गया था के साथ अपवाद था "दृश्य पहले से ही है ..."। धन्यवाद। –

3

अपने आवेदन में, मैं एक ImageButton नियंत्रण है कि एक ImageSource संपत्ति निर्दिष्ट करता है परिभाषित किया है।

यह इस तरह से स्टाइल है:

<Style TargetType="{x:Type controls:ImageButton}"> 
    <Setter Property="ForceCursor" Value="True" /> 
    <Setter Property="Cursor" Value="Hand" /> 

    <Setter Property="ToolTip" Value="{Binding Path=Caption, RelativeSource={RelativeSource Mode=Self}}" /> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type controls:ImageButton}"> 
       <Image Width="16" Height="16" Source="{Binding Path=ImageSource, RelativeSource={RelativeSource Mode=TemplatedParent}}" Name="image" /> 

       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter TargetName="image" Property="Opacity" Value="0.3" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

लेकिन आपके मामले में, आप एक निश्चित Style सेट के साथ सभी Button की वस्तुओं की छवि का उपयोग करना चाहते हैं, तो आप बस सिर्फ <Image Source="pack://application:,,,/My.Assembly.Name;component/Icons/revert.png" />Template अगर में इस्तेमाल कर सकते हैं जिस छवि का आप उपयोग करना चाहते हैं उसे एप्लिकेशन में संसाधन के रूप में शामिल किया गया है।

+0

THX है, लेकिन यह बहुत अच्छी तरह से बाहर काम नहीं किया। कृपया कोडनेक की पोस्ट देखें। – sean717

+0

क्षमा करें, हाँ, मैं misspoke। ContentTemplate गया चाहिए है (कोड डंप मैं पोस्ट के रूप में), अपने मूल सारांश में के रूप में सामग्री नहीं। भविष्य के दर्शकों के लिए संपादित किया है। – fatty

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