如何在 datagridview 的单元格中显示 wifi 信号强度计?在 C# 中

问题描述 投票:0回答:1

我在 C# 的 datagridview 中有一个不同 IOT 的列表,我想在每一行上显示每个 IOT 的 WIFI 信号强度。这是我个人使用的。

我找到了 Ron Beyer 的“C# 中的信号强度控制”,但它不适用于 datagridview 的单元格。我读到的是,我需要创建自己的自定义 datagridview 列、单元格和其他一些东西。但我不太确定如何将两者放在一起。

这方面的任何帮助都会很棒。或者用其他方法也可以。

c# datagridview datagridviewcolumn
1个回答
0
投票

很简单,要在

GridView
中放置任何控件,您需要指定
DataGridTemplateColumn.CellTemplate
。以下示例 XAML 代码向您展示了如何在
DataGrid
中自定义数据外观的不同方法:

<Grid>
    <DataGrid
        Name="dataGrid1"
        AutoGenerateColumns="False"
        IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Address">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBox
                            FontSize="40"
                            Foreground="MidnightBlue"
                            Text="{Binding Path=SignalStrength, Mode=OneWay}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>

        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <Border
                    Padding="10"
                    Background="BlanchedAlmond"
                    BorderThickness="0">
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock
                                VerticalAlignment="Center"
                                FontSize="12"
                                Text="Signal strength: " />
                            <TextBlock
                                VerticalAlignment="Center"
                                FontSize="40"
                                Foreground="MidnightBlue"
                                Text="{Binding SignalStrength}" />
                        </StackPanel>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
    </DataGrid>
</Grid>

以及背后的示例代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        var devices = new dynamic[]
        {
            new { SignalStrength = 94 }
        };

        dataGrid1.ItemsSource = devices;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.