Я работаю с Siemens PL C Инструмент моделирования. Я бы хотел немного автоматизировать.
У меня есть Visual Studio Community '19 и я выбрал WPF.
Задача, с которой я борюсь, это ...
Я беру список тегов
> STagInfo[] TagInfos { get; }
и помещаю его в список
private List<TagSim> LoadCollectionData()
{
List<TagSim> myList = new List<TagSim>();
STagInfo[] abc = PLC.TagInfos;
foreach (STagInfo s in abc)
{
if (((s.Area).ToString() == "Input") & (s.DataType.ToString() == "Bool"))
{
myList.Add(new TagSim()
{
TagName = s.Name,
TagArea = (s.Area).ToString(),
TagType = s.DataType.ToString(),
Status = PLC.ReadBool(s.Name)
}) ;
}
}
return myList;
}
и показываю в DataGrid
<DataGrid.Columns>
<DataGridTextColumn Header = "TagName" Binding = "{Binding TagName}" />
<DataGridTextColumn Header = "TagArea" Binding = "{Binding TagArea}" />
<DataGridTextColumn Header = "TagDataType" Binding = "{Binding TagType}" />
<DataGridCheckBoxColumn Header = "Status" Binding = "{Binding Status}"/>
<DataGridCheckBoxColumn Header = "Set" Binding = "{Binding Set}"/>
<DataGridTextColumn Header = "Comment" Binding = "{Binding Comment}" />
</DataGrid.Columns>
</DataGrid>
У меня вопрос ... Как обновить сетку данных, если теги изменяют значения? Когда в сетке данных изменяется «Set», мне нужно вызвать WriteBool («TagName», SetValue). Как я могу получить информацию, что ячейка в datagrid изменена? Является ли WPF и datagrid хорошим подходом?
С наилучшими пожеланиями