修复DataGrid列绑定是否显示的问题

This commit is contained in:
2025-07-10 12:26:18 +08:00
parent e2ba72ad1d
commit d360e583d2
2 changed files with 35 additions and 5 deletions

View File

@@ -0,0 +1,22 @@
using System.Windows;
namespace PMSWPF.Extensions
{
public class BindingProxy : Freezable
{
// Using a DependencyProperty as the backing store for Data. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
}
}

View File

@@ -16,6 +16,7 @@
d:DesignHeight="600" d:DesignHeight="600"
d:DesignWidth="800"> d:DesignWidth="800">
<UserControl.Resources> <UserControl.Resources>
<ex:BindingProxy x:Key="proxy" Data="{Binding}" />
<ex:EnumBindingSource x:Key="signalType" <ex:EnumBindingSource x:Key="signalType"
EnumType="{x:Type en:SignalType}" /> EnumType="{x:Type en:SignalType}" />
<ex:EnumBindingSource x:Key="protocolType" <ex:EnumBindingSource x:Key="protocolType"
@@ -258,9 +259,17 @@
Binding="{Binding Name}" /> Binding="{Binding Name}" />
<DataGridTextColumn Header="描述" <DataGridTextColumn Header="描述"
Binding="{Binding Description}" /> Binding="{Binding Description}" />
<!-- <DataGridTextColumn IsReadOnly="True" -->
<!-- Header="节点ID" -->
<!-- Binding="{Binding NodeId}" /> -->
<DataGridTextColumn IsReadOnly="True" <DataGridTextColumn IsReadOnly="True"
Header="节点ID" Header="S7地址"
Binding="{Binding NodeId}" /> Visibility="{Binding Source={StaticResource proxy}, Path=Data.IsS7ProtocolSelected, Converter={StaticResource BooleanToVisibilityConverter}}"
Binding="{Binding S7Address}" />
<DataGridTextColumn IsReadOnly="True"
Header="OPCUA节点ID"
Visibility="{Binding Source={StaticResource proxy}, Path=Data.IsOpcUaProtocolSelected, Converter={StaticResource BooleanToVisibilityConverter}}"
Binding="{Binding OpcUaNodeId}" />
<!-- <DataGridTextColumn IsReadOnly="True" --> <!-- <DataGridTextColumn IsReadOnly="True" -->
<!-- Header="协议类型" --> <!-- Header="协议类型" -->
<!-- Binding="{Binding ProtocolType}" /> --> <!-- Binding="{Binding ProtocolType}" /> -->
@@ -288,6 +297,7 @@
</DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTemplateColumn Header="轮询频率" <DataGridTemplateColumn Header="轮询频率"
SortMemberPath="PollLevelType"> SortMemberPath="PollLevelType">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
@@ -308,9 +318,7 @@
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True"
Header="S7地址"
Binding="{Binding S7Address}" />
<DataGridTextColumn IsReadOnly="True" <DataGridTextColumn IsReadOnly="True"
Header="当前值" Header="当前值"
Binding="{Binding DataValue}" /> Binding="{Binding DataValue}" />