Пометить как прочитанные только все элементы управления WPF - PullRequest
0 голосов
/ 08 мая 2018

ОК, это интересный.

У меня есть приложение wpf с вкладками. То, что я хочу сделать, - это настройка БД, которая отключает возможность редактирования всех текстовых полей. Я думал о том, чтобы ввести значение, если значение равно true, тогда я бы включил все текстовые поля только для чтения.

Я видел этот пример:

private void DisableControls(Control con)
{
    foreach (Control c in controls)
    {
        DisableControls(c);
    }
    con.Enabled = false;
}

Однако я получаю красную волнистую линию под управлением и снова под Включено. Я предвосхищу это, говоря, что я новичок в WPF.

У кого-нибудь есть решение этой проблемы (или даже лучший способ), любое правильное указание поможет.

1 Ответ

0 голосов
/ 08 мая 2018

Создайте модель представления, которая обернет ваши модели базы данных

public class MyViewModel : INotifyPropertyChanged
{
    public bool MakeReadOnly {get;set;}
}

Ссылка на модель вашего вида в View

<Window x:Class="Example.MainWindow"
    ...
    xmlns:local="clr-namespace:Example"
    ...>
    <Window.Resources>
         <local:MyViewModel x:Key="ViewModel"/>
    </Window.Resources>

    ...

</Window>

Привязать логическое значение к свойству текстовых полей IsReadOnly

<TextBox x:Name="FirstName" IsReadOnly="{Binding MakeReadOnly">
  The user may not modify the contents of this TextBox if marked as readonly
</TextBox>

<TextBox x:Name="LastName" IsReadOnly="{Binding MakeReadOnly">
  The user may not modify the contents of this TextBox if marked as readonly
</TextBox>

Подробнее о моделях представлений здесь

Надеюсь, это поможет!

...