Я создаю пользовательский элемент управления с использованием формата 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; }
}
}