DataGridComboBoxColumn透明ComboBoxItems

时间:2019-11-12 00:35:35

标签: c# wpf datagridcomboboxcolumn material-design-in-xaml

我正在尝试创建用于修改MODBUS设备的软件,并且设备的每个标签地址都有其自己的标签类型。我想通过组合框选择它。当放置在数据网格内部时,组合框会发生奇怪的行为。但是,在尝试了相同的方法但没有包含Materialdesign软件包的情况下,组合框的行为正常。

第一次点击

first click

第二次点击

second click

我尝试在一个带有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>

1 个答案:

答案 0 :(得分:0)

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

只需使用绑定即可显示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>

希望这对将来会遇到此问题的人有所帮助。