我正在尝试创建用于修改MODBUS设备的软件,并且设备的每个标签地址都有其自己的标签类型。我想通过组合框选择它。当放置在数据网格内部时,组合框会发生奇怪的行为。但是,在尝试了相同的方法但没有包含Materialdesign软件包的情况下,组合框的行为正常。
第一次点击
第二次点击
我尝试在一个带有materialDesign包的组合框上创建一个组合框,而没有一个则创建组合框。在前者上,组合框列表的不透明度在首次单击时较低,但是在再次单击时,不透明度最大。没有包装,就永远不会发生这种情况。
<DataGridTemplateColumn Header="Tag Type">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="TtypeComboBox" IsEditable="False" Width="140">
<ComboBoxItem Content="Modbus Coil(0x)"/>
<ComboBoxItem Content="Discrete Input(1x)" IsSelected="True"/>
<ComboBoxItem Content="Input Register(3x)"/>
<ComboBoxItem Content="Holding Register(4x)"/>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
答案 0 :(得分:0)
请注意所有会遇到此问题的人...(或者也许我是唯一遇到此问题的人)
只需使用绑定即可显示ComboBox的数据。
然后,根据设计,将组合框的样式分配给DataGridComboBoxColumn的EditingElementStyle。
<DataGrid DockPanel.Dock="Left" ScrollViewer.CanContentScroll="True" x:Name="TagSelection" Margin="5" CanUserAddRows="False" CanUserSortColumns="False" AutoGenerateColumns="False" materialDesign:DataGridAssist.CellPadding="5 5 5 5" materialDesign:DataGridAssist.ColumnHeaderPadding="5" IsEnabled="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" IsReadOnly="True" Binding="{Binding TagID}" ElementStyle="{StaticResource centerAligned}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"/>
<DataGridTextColumn Header="Address" Binding="{Binding TagAddress}" ElementStyle="{StaticResource centerAligned}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"/>
<DataGridComboBoxColumn x:Name="TagTypeCombo" EditingElementStyle="{StaticResource MaterialDesignDataGridComboBox}" Header="Tag Type" SelectedValueBinding="{Binding TagType}">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
希望这对将来会遇到此问题的人有所帮助。