У меня в программе есть следующий элемент управления 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" отображается волнистой линией и записывается синтаксическая ошибка.