2012-12-25 16 views
12

सेट करना मैं लंबे टेक्स्ट को ठीक से दिखाने के लिए टूलटिप मैक्सविड्थ संपत्ति सेट करना चाहता हूं। इसके अलावा मुझे टेक्स्ट रैपिंग की आवश्यकता है। मैंने इस शैली का उपयोग किया:डब्ल्यूपीएफ - टूलटिप मैक्सविड्थ

<Style TargetType="ToolTip"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding}" MaxWidth="400" TextWrapping='Wrap' /> 
        </StackPanel> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
</Style> 

यह टूलटिप शैली मेरे उद्देश्य के लिए ठीक है। हालांकि, यह कुछ नियंत्रणों के लिए प्रभावी नहीं है जिनके पास टूलटिप शैली है। उदाहरण के लिए, निम्न बटन का टूलटिप प्रकट नहीं हो सकता है।

<Button> 
    <Button.ToolTip> 
     <StackPanel> 
      <TextBlock Style="{StaticResource firstText}" Text="aaaaaaaaaaaaa"/> 
      <TextBlock Style="{StaticResource secondText}" Text="bbbbbbbbbbbbb"/>  
      <TextBlock Bacground="Red" Text="ccccccccccccc"/>  
     </StackPanel> 
    </Button.ToolTip> 
</Button> 

मैं सभी टूलटिप्स के लिए टेक्स्ट रैपिंग के साथ maxwidth गुण सेट करना चाहते हैं। मैं इस मुद्दे के लिए क्या कर सकता हूं?

+0

** कुछ नियंत्रणों के लिए ** का मतलब क्या है, जिसमें टूलटिप शैली है। **? – Ramin

+0

मेरा मतलब विशिष्ट टूलटिप्स है। उदाहरण के लिए उदाहरण के लिए बटन में तीन टेक्स्टब्लॉक शामिल हैं। लेकिन अगर मैं इस तरह उपयोग करता हूं: <बटन टूलटिप = "हैलो वर्ल्ड .." />, मेरी शैली सफल है। इसलिए, विभिन्न टूलटिप्स जिनमें अलग-अलग संरचनाएं हैं, मेरी शैली का उपयोग नहीं कर सकती .. – iremce

+0

मैंने इसे ऊपर उठाया, लेकिन मुझे लगता है कि आपको अपना ** लक्ष्य ** और समझा जाना चाहिए। चीजें करने के हमेशा बेहतर तरीके हैं :-)। – Ramin

उत्तर

10

ToolTip की शैली के बाद मेरे लिए उपयोगी है:

<Style TargetType="ToolTip" x:Key="InternalToolTipStyle"> 
    <Setter Property="MaxWidth" Value="{Binding Path=(lib:ToolTipProperties.MaxWidth)}" /> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <ContentPresenter Content="{TemplateBinding Content}" > 
        <ContentPresenter.Resources> 
         <Style TargetType="{x:Type TextBlock}"> 
          <Setter Property="TextWrapping" Value="Wrap" /> 
         </Style> 
        </ContentPresenter.Resources> 
       </ContentPresenter> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

इस शैली के साथ, बटन निम्न में से टूलटिप ठीक से प्रकट होता है:

<Button> 
<Button.ToolTip> 
    <StackPanel> 
     <TextBlock Style="{StaticResource firstText}" Text="aaaaaaaaaaaaa"/> 
     <TextBlock Style="{StaticResource secondText}" Text="bbbbbbbbbbbbb"/>  
     <TextBlock Bacground="Red" Text="ccccccccccccc"/>  
    </StackPanel> 
</Button.ToolTip> 

1

उपयोग करें:

<Window.Resources> 
<Style TargetType="ToolTip" x:Key="TT"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text="{Binding}" MaxWidth="400" TextWrapping='Wrap' /> 
       </StackPanel> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
</Window.Resources> 

<Button> 
    <Button.ToolTip> 
     <ToolTip Style="{StaticResource TT}"> 
    bbbbbbbbbbbbbbbbbbbdddddddddddddddddbbbmmmmmmhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 
     </ToolTip> 
    </Button.ToolTip> 
</Button> 

संपादित करें:

<Button> 
    <Button.ToolTip> 
     <RichTextBox> 
      <FlowDocument> 
       <Paragraph> 
       This is flow content and you can <Bold>edit me!</Bold> 
       </Paragraph> 
      </FlowDocument> 
</RichTextBox> 
    </Button.ToolTip> 
</Button> 

देखें: RichTextBox Overview

+0

मुझे नियंत्रण की सामग्री नहीं बदलनी चाहिए। बटन मेरे प्रश्न के रूप में दिखना चाहिए (स्टैकपैन के साथ जिसमें दो टेक्स्टब्लॉक है)। – iremce

+0

मेरे उदाहरण का @iremce बटन आपके जैसा ही है। आपने टूलटाइप को स्टैकपैनल सेट करने के लिए सेट किया है, लेकिन मैं इसे अपनी शैली के साथ टूलटिप के रूप में बदलता हूं। मुझे लगता है कि आपको अपने लक्ष्य की व्याख्या करनी चाहिए। टूलटिप शैली का उपयोग क्यों न करें? क्या आप टूलटिप को दो पैराग्राफ दिखाना चाहते हैं? – Ramin

+0

हां, बटन या अन्य नियंत्रण के टूलटिप में पैराग्राफ से एक और हो सकता है। मुझे नियंत्रण की टूलटिप संरचना नहीं बदलनी चाहिए .. – iremce

15

मैं खाका का उपयोग कर से बचने क्योंकि एक बहुत बातें लागू किया जाना चाहिए। तो और अधिक सुरुचिपूर्ण रास्ता

<Style TargetType="ToolTip"> 
    <Style.Resources> 
     <Style TargetType="ContentPresenter"> 
      <Style.Resources> 
       <Style TargetType="TextBlock"> 
        <Setter Property="TextWrapping" Value="Wrap" /> 
       </Style> 
      </Style.Resources> 
     </Style> 
    </Style.Resources> 
    <Setter Property="MaxWidth" Value="500" /> 
</Style> 
+1

यह वास्तव में बहुत पुन: उपयोग के साथ एक बहुत अच्छा और साफ समाधान है। मुझे लगता है कि x का उपयोग करना: टार्गेट टाइप में टाइप भी कठोर और क्लीनर है। –

12

कि मुझे लगता है कि यह एक पुराने सवाल है, लेकिन कोई भी अभी तक इस समस्या का सबसे स्पष्ट और सरल समाधान का सुझाव दिया है लगता है क्या करना है। इस तरह, मैंने सोचा कि मैं इसे यहां जोड़ दूंगा:

<Button> 
    <Button.ToolTip> 
     <ToolTip MaxWidth="400"> 
      <TextBlock Text="{Binding Binding}" TextWrapping="Wrap" /> 
     </ToolTip> 
    </Button.ToolTip> 
</Button> 
+1

सरलतम एक समाधान! –

+1

सरल और अच्छा एक,;) – Coding4Fun

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