DataGridComboBoxColumn 透明 ComboBoxItems

DataGridComboBoxColumn transparent ComboBoxItems

我正在尝试创建一个软件来修改 MODBUS 设备,并且设备的每个标签地址都有自己的标签类型。我想使用组合框 select 它。当组合框放置在数据网格内时,会出现奇怪的行为。但是在尝试相同的方法但没有包含 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>

请注意所有遇到此问题的人...(或者我可能是唯一遇到此问题的人)

只需使用绑定来显示 ComboBox 的数据。

访问 https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.datagridcomboboxcolumn?redirectedfrom=MSDN&view=netframework-4.8 了解更多信息。

然后,对于设计,将组合框的样式指定给 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>

希望这对以后遇到这个问题的人有所帮助。