我在 C# 的 datagridview 中有一个不同 IOT 的列表,我想在每一行上显示每个 IOT 的 WIFI 信号强度。这是我个人使用的。
我找到了 Ron Beyer 的“C# 中的信号强度控制”,但它不适用于 datagridview 的单元格。我读到的是,我需要创建自己的自定义 datagridview 列、单元格和其他一些东西。但我不太确定如何将两者放在一起。
这方面的任何帮助都会很棒。或者用其他方法也可以。
很简单,要在
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;
}
}