110,539
社区成员
发帖
与我相关
我的任务
分享
//存储
foreach (var propertyInfo in comBase.GetType().GetProperties())
{
try
{
object obj = propertyInfo.GetValue(comBase, null);
if(!obj.GetType().IsArray)
copyProperty.Add(propertyInfo.Name,obj);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
//比较赋值
foreach (var propertyInfo in comBase.GetType().GetProperties())
{
try
{
object value = propertyInfo.GetValue(comBase, null);
if (copyProperty.ContainsKey(propertyInfo.Name))
{
var x = copyProperty[propertyInfo.Name];
if(!x.Equals(value))
propertyInfo.SetValue(comBase,x,null);
}
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}
<GroupBox Header="Tcp通讯" Visibility="{Binding TcpSettings.Count,Converter={StaticResource CountToVisConvertor}}">
<DataGrid x:Name="TcpDg" GotFocus="TcpDg_OnGotFocus" ItemsSource="{Binding TcpSettings}" SelectedItem="{Binding SelectedItem}">
<DataGrid.Columns>
<DataGridTextColumn Header="名称" Binding="{Binding Name}"/>
<DataGridTextColumn Header="描述" Binding="{Binding Description}"/>
<DataGridTextColumn Header="解析模块名称" Binding="{Binding AnalyserName}"/>
<DataGridTextColumn Header="Ip地址" Binding="{Binding IP}"/>
<DataGridTextColumn Header="端口" Binding="{Binding Port}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
RaisePropertyChanged(nameof(TcpSettings)); //直接调用通知接口
obj.TcpDg.GetBindingExpression(ItemsControl.ItemsSourceProperty)?.UpdateSource();//obj是前台传入的View对象,调用DataGrid的绑定对象刷新