2012-04-25 15 views
13

मेरे पास कई रिचटेक्स्टबॉक्स हैं जो लॉगिंग आउटपुट के लिए उपयोग किए जाते हैं। चूंकि वे केवल पढ़े जाते हैं, जब टेक्स्ट अपडेट होते हैं तो वे स्वचालित रूप से स्क्रॉल नहीं करते हैं। मैं स्क्रॉल को समाप्त करने के लिए टेक्स्ट चेंज किए गए ईवेंट का उपयोग कर सकता हूं, लेकिन क्या एक्सएएमएल में कोई संपत्ति या कुछ सेट करने का कोई तरीका नहीं है ताकि स्क्रॉलिंग सामान्य की तरह हो?जब मैं एक नई लाइन जोड़ता हूं तो मैं अंत में RichTextBox स्क्रॉल कैसे बना सकता हूं?

+0

संभव डुप्लिकेट [नीचे \ पर Verticall स्क्रॉल richtextbox [WPF \]] (http://stackoverflow.com/questions/4256129/verticall-scroll-richtextbox-on-the-bottom-wpf) –

उत्तर

16

मैंने आपकी समस्या के लिए गुगल किया था और this पोस्ट मिला। "प्रोग्रामिंग द रिचटेक्स्टबॉक्स" अनुभाग में लेखक ने उस व्यवहार को प्राप्त करने के बारे में वर्णित किया था जिसे आप उम्मीद कर रहे थे।

कृपया जांचें और मुझे बताएं कि यह किसी भी उपयोग के लिए है या नहीं।


मैं आपकी समस्या को पुन: पेश करने की कोशिश की और निम्नलिखित समाधान

<Window x:Class="CheckRichTextBox.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="170" Width="300"> 
    <StackPanel> 
     <RichTextBox Height="100" Name="richTextBox1" IsReadOnly="True" VerticalScrollBarVisibility="Visible"/> 
     <Button Name="btnAdd" Content="Click me to add text" VerticalAlignment="Bottom" Click="BtnAddClick" /> 
    </StackPanel> 
</Window> 
के साथ आया था

उसी के लिए कोड के पीछे के रूप में नीचे है:

using System.Windows; 

namespace CheckRichTextBox 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void BtnAddClick(object sender, RoutedEventArgs e) 
     { 
      richTextBox1.AppendText("You had Clicked the button for adding text\n"); 
      richTextBox1.ScrollToEnd(); 
     } 
    } 
} 

यह स्वत: स्क्रॉल की समस्या का हल , कृपया इसे जांचें और मुझे बताएं कि क्या यह किसी भी मदद की है।

+3

यह स्क्रॉलबार दृश्यमान बनाता है, लेकिन पाठ को प्रोग्रामेटिक रूप से जोड़े जाने पर यह दस्तावेज़ के अंत तक स्क्रॉल नहीं करता है। ऐसा लगता है कि मैं TextChanged घटना के साथ अटक जा सकता है। – Merad

+1

मुझे आशा है कि संपादित समाधान आपको – Pank

+1

@Merad में मदद कर सकता है आप TextChanged ईवेंट के साथ ऐसा कैसे करते हैं? –

13

मैंने Interactivity ट्रिगर और एक बहुत ही सरल कार्रवाई का उपयोग करके इस समस्या को हल किया।

कार्रवाई इस तरह दिखता है:

<RichTextBox IsReadOnly="True" VerticalScrollBarVisibility="Auto"> 
    <i:Interaction.Triggers> 
      <i:EventTrigger EventName="TextChanged"> 
       <interactivity:ScrollToBottomAction/> 
      </i:EventTrigger> 
    </i:Interaction.Triggers> 
</RichTextBox> 
+0

ग्रेट सॉल्यूशन! –

+0

मैं इसे पुराने संस्करण के मिश्रण के साथ कुछ करने के कारण काम करने के लिए नहीं मिल सकता। और मैंने कोशिश की है कि http://stackoverflow.com/questions/32024034/the-type-from-assembly-is-built-with-an-older-version-of-blend-sdk-and-is में क्या सुझाया गया था कोई भाग्य के साथ -not-su। कोई विचार? – Snoopy

-1
RichTextBox.AppendText("String") 
RichTextBox.ScrollToCaret() 

जब मैं RichTextBox.text, ScrollToCaret() को जोड़ने था काम नहीं करता:

public class ScrollToBottomAction : TriggerAction<RichTextBox> 
{ 
    protected override void Invoke(object parameter) 
    { 
     AssociatedObject.ScrollToEnd(); 
    } 
} 

तब मेरे XAML में मैं इस राशि ।

RichTextBox.text = RichTextBox.text + "String" 
RichTextBox.ScrollToCaret() 
की
+0

'स्क्रॉलटोकैरेट' WinForms 'RichTextBox' के लिए है, न कि एक WPF एक। इसके बारे में यहां एक प्रश्न है: [रिच टेक्स्ट बॉक्स नीचे स्क्रॉल करें जब नया डेटा लिखा जाता है] (http://stackoverflow.com/questions/9416608/rich-text-box-scroll-to-the-bottom- जब नए-डेटा-है-लिखा करने के लिए यह) –

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

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