gpt4 book ai didi

c# - 在 WPF 的数据网格列中写入状态

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:15 24 4
gpt4 key购买 nike

我有一个简单的 WPF 应用程序,它使用从绑定(bind)列表收集的数据填充行,它看起来像这样: enter image description here

现在您可以看到我的第一列是空的,但我想写下取决于 sts 列的信息。例如:如果 sts == 8 我想在第一个空白列中写下字母 R,当 sts == 0 时将其留空。我怎样才能做到这一点?这是我的 WPF 的反向代码:

<DataGrid AutoGenerateColumns="False" Background="White" Height="316" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="640" SelectionMode="Single" IsReadOnly="True" ItemsSource="{Binding Oblista}" AutoGeneratingColumn="generiseColumn" >
<!---->
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/>
<EventSetter Event="MouseRightButtonDown" Handler="Row_RightCLick"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn />
<DataGridTextColumn Header="sts" Width="50" Binding="{Binding cflag}"/>
<DataGridTextColumn Header="Adresa" Width="80" Binding="{Binding Sadr_reg}"/>
<DataGridTextColumn Header="Opis" Width="200" Binding="{Binding naziv}"/>
<DataGridTextColumn Header="Tip" Width="80" Binding="{Binding Stip_reg}"/>
<DataGridTextColumn Header="Vrednost" Width="80" Binding="{Binding sVal}"/>
<DataGridTextColumn Header="Min" Width="40" Binding="{Binding lo_limit}"/>
<DataGridTextColumn Header="Max" Width="40" Binding="{Binding hi_limit}"/>
<DataGridTextColumn Header="Rw" Width="40" Binding="{Binding write}"/>
</DataGrid.Columns>
</DataGrid>

XAML.CS:

 public  BindingList<PIO_CARD> Oblista = new BindingList<PIO_CARD>();

public MainWindow()
{
InitializeComponent();
dataGrid1.ItemsSource = Oblista;
}

最佳答案

您可以将空的 DataGridTextColumn 替换为具有 CellTemplateDataTriggerDataGridTemplateColumn:

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding cflag}" Value="8">
<Setter Property="Text" Value="R" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

或者您可以将另一个属性添加到您的 PIO_CARD 类并绑定(bind)到这个:

public string FirstValue
{
get { return cflag == "8" ? "R" : string.Empty; }
}

XAML:

<DataGridTextColumn Binding="{Binding FirstValue}"/>

关于c# - 在 WPF 的数据网格列中写入状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52116826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com