WPF / C#: перевод текста в сетке данных на основе параметра управления - PullRequest
0 голосов
/ 25 марта 2020

Я создаю пользовательский элемент управления с использованием формата DataGrid для использования в приложении HMI. Единственный способ передачи данных в пользовательский элемент управления после их помещения в приложение HMI - через параметры пользовательского элемента управления. Я сделал пример проекта, чтобы проиллюстрировать, что мне придется делать.

У меня есть два элемента в списке. У каждого есть поле с именем «TestBool», которое необходимо заполнить на основе значения соответствующего параметра управления модулем (TestBool1 и TestBool2). Также есть текстовое поле с надписью Да / Нет или Си / Нет в зависимости от того, является ли параметр «IsSpani sh» истинным. Когда я помещаю этот элемент управления в свое приложение, изменение значений параметров не обновляет отображение элемента управления. Любой совет?

Примечания: Я не определяю объект представления (это называется моделью MVVM?), Потому что параметры должны быть в определении класса пользовательского элемента управления, чтобы отображаться в приложении, в которое я помещаю его Кроме того, проект является библиотекой классов, потому что мне нужно создать файл DLL.

public partial class UserControl1 : UserControl
{

    private List<User> users = new List<User>()
    {
        new User()
        {
            Id = 1,
            TestBool = true,
            TestString = "YES"
        },
        new User()
        {
            Id = 2,
            TestBool = false,
            TestString = "NO"
        }
    };

    public UserControl1()
    {
        InitializeComponent();

        dgSimple.ItemsSource = users;

    }
    public bool TestBool1
    {
        get { return _testBool1; }
        set
        {
            _testBool1 = value;
            users[0].TestBool = value;
            if ((value == true) & (IsSpanish == false)) { users[0].TestString = "YES"; }
            else if ((value == true) & (IsSpanish == true)) { users[0].TestString = "SI"; }
            else if ((value == false) & (IsSpanish == false)) { users[0].TestString = "NO"; }
            else if ((value == false) & (IsSpanish == true)) { users[0].TestString = "NO"; }
        }
    }

    private bool _testBool1;

    public bool TestBool2
    {
        get { return _testBool2; }
        set
        {
            _testBool2 = value;
            users[1].TestBool = value;
            if ((value == true) & (IsSpanish == false)) { users[1].TestString = "YES"; }
            else if ((value == true) & (IsSpanish == true)) { users[1].TestString = "SI"; }
            else if ((value == false) & (IsSpanish == false)) { users[1].TestString = "NO"; }
            else if ((value == false) & (IsSpanish == true)) { users[1].TestString = "NO"; }
        }
    }

    private bool _testBool2;

    public bool IsSpanish
    {
        get { return _isSpanish; }
        set
        {
            _isSpanish = value;
        }
    }

    private bool _isSpanish;

}

public class User
{
    public int Id { get; set; }

    public bool TestBool { get; set; }

    public String TestString { get; set; }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...