Использование сложного регулярного выражения в элементе управления WPF DXTextEdit - PullRequest
1 голос
/ 13 октября 2019

У меня в программе есть следующий элемент управления DevExpress (с использованием WPF):

public class EditCustomListsModel : ViewModelBase  
{  
      ...  
      private string _bookIds;  

       public string BookIds  
       {  
           get => _bookIds;  
           set  
           {  
               _bookIds = value;  
               OnPropertyChanged(nameof(BookIds));  
           }  
       }  

       public EditCustomListsModel(IApplicationService appService, CustomList customerList = null)  
       {  
           this.appService = appService;  

           if (customerList != null)  
           {  
               _windowMode = WindowMode.Editing;  
               CustomList = CloneEntityHelper.CustomListClone(customerList);  
               BookIds = BookIdCollectionToString(); <--------- line related to element  
           }  
           else  
           {  
               _windowMode = WindowMode.Adding;  
               CustomList = new CustomList();  
           }  
       }  

       /// <summary>  
       /// Метод преобразования коллекции BookId в строку  
       /// </summary>  
       /// <returns></returns>  
       private string BookIdCollectionToString() =>  
           CustomList?.CustomListDetails?.Any() == true  
               ? string.Join(Environment.NewLine, CustomList.CustomListDetails.Select(p => p.BookId))  
               : string.Empty;  
}

Как настроить элемент управления данными, чтобы при вводе (редактировании) данных использовалось следующее регулярное выражение:

^[1-9]\d{0,8}(?:\r\n[1-9]\d{0,8})*$

То есть в элементе управления должны отображаться только строки, каждая из которых содержит целое число и символ (ы) CR + LF, последние (и) могут не быть.

Если записькак это:

<dxe:TextEdit Grid.Row="1" Grid.RowSpan="2" Grid.Column="0" TextWrapping="Wrap" AcceptsReturn="True"  
                          VerticalContentAlignment="Top" VerticalScrollBarVisibility="Auto"  
                          EditValue="{Binding BookIds, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  
                          MaskShowPlaceHolders="False" Mask="[1-9]\d{0,8}(?:\r\n[1-9]\d{0,8})*" MaskType="RegEx" MaskAutoComplete="None"/>

что в разметке MaskType = "RegEx" отображается волнистой линией и записывается синтаксическая ошибка.

...