0

Windows ストア アプリ (XAML/C#) で、'RichEditBox' を含むカスタム コントロールを作成しました。文字数 (MaxLength) を制限するか、少なくとも垂直スクロール バーを無効にする必要があります。どうすれば達成できますか?

4

2 に答える 2

0

ここでこれを試してください:

<RichEditBox x:Name="TextElementControl" 
    Background="{Binding Background, ElementName=userControlModified}" 
    ManipulationMode="None" 
    ScrollViewer.HorizontalScrollMode="Disabled"
    AcceptsReturn="True" TextWrapping="Wrap"
    SizeChanged="TextElementControlSizeChanged"  
    IsDoubleTapEnabled="False" 
    BorderThickness="0" 
    BorderBrush="{x:Null}" 
    Padding="10,10,10,10"     
/>

コードビハインド:

TextElementControl.TextChanged += TextElementControlTextChanged;

その他のコード ビハインド:

private void TextElementControlTextChanged(object sender, RoutedEventArgs e) { string str; TextElementControl.Document.GetText(Windows.UI.Text.TextGetOptions.None, out str); TextElementControl.Height = double.NaN;

        if (str.Trim().Length > 502 && !_loading)
        {
            if (popUpReminder == null)
            {
                popUpReminder = new Popup();
                popUpReminder.IsLightDismissEnabled = true;

                var panel = new StackPanel();
                panel.Background = BlackSolidColorBrush;
                panel.Height = 60;
                panel.Width = 220;

                var reminderText = new TextBlock();
                reminderText.FontSize = 14;
                reminderText.Text = "You have exceeded the maximum number of characters for this textbox.";
                reminderText.TextWrapping = TextWrapping.Wrap;

                reminderText.Focus(Windows.UI.Xaml.FocusState.Programmatic);
                reminderText.Margin = new Thickness(10, 5, 10, 5);
                panel.Children.Add(reminderText);

                Border brder = new Border();
                brder.BorderBrush = RedSolidColorBrush;
                brder.BorderThickness = new Thickness(2);
                brder.Child = panel;

                popUpReminder.Child = brder;
                popUpReminder.HorizontalOffset = Window.Current.CoreWindow.Bounds.Width - panel.Width - 10;
                popUpReminder.VerticalOffset = Window.Current.CoreWindow.Bounds.Bottom - 100 - panel.Height - 10;
            }
            popUpReminder.IsOpen = true;
            TextElementControl.Document.Undo();


        } }
于 2013-10-23T08:19:56.590 に答える
0

宣言的な方法で文字数の制限を設定することはできないと思いますが、テキスト変更イベントを処理し、コード ビハインドでチェックを行うことができます。

スクローラーの場合、ScrollViewer.VerticalScrollBarVisibilityプロパティを に設定できますDisabled

于 2013-02-14T14:14:10.720 に答える