C# WPF中datagrid列中的写入状态
我有一个简单的WPF应用程序,它使用从绑定列表收集的数据填充行,如下所示: 现在您可以看到,我的第一列是空的,但我想写下取决于C# WPF中datagrid列中的写入状态,c#,wpf,C#,Wpf,我有一个简单的WPF应用程序,它使用从绑定列表收集的数据填充行,如下所示: 现在您可以看到,我的第一列是空的,但我想写下取决于sts列的信息。例如:如果sts==8我想在第一个空白栏中写下字母R,当sts==0时将其留空。我该怎么做? 以下是我的WPF的背景代码: <DataGrid AutoGenerateColumns="False" Background="White" Height="316" HorizontalAlignment="Left" Name="dataGrid1"
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;
}
public BindingList Oblista=new BindingList();
公共主窗口()
{
初始化组件();
dataGrid1.ItemsSource=Oblista;
}
您可以将空的DataGridTextColumn
替换为DataGridTemplateColumn
,该列具有CellTemplate
和DataTrigger
:
<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>
XAML:
<DataGridTextColumn Binding="{Binding FirstValue}"/>
您可以编写
数据触发器
,也可以扩展PIO_卡
类,并添加一个属性,将第一列绑定到:
public class ExtendedPIO_CARD : PIO_CARD
{
public string FirstColumn
{
get
{
if (cflag == 8)
{
return "R";
}
if(cflag == 0)
{
return string.Empty;
}
return "default";
}
}
}
为什么不在viewmodel中执行此操作,并将新属性添加到要绑定网格的列表中?
public class ExtendedPIO_CARD : PIO_CARD
{
public string FirstColumn
{
get
{
if (cflag == 8)
{
return "R";
}
if(cflag == 0)
{
return string.Empty;
}
return "default";
}
}
}