为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕的地6264312 2021-12-25 18:27:10
我有一个简单的 WPF 应用程序,它使用从绑定列表收集的数据填充行,它看起来像这样:现在你可以看到我的第一列是空的,但我想写下取决于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; }
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你可以更换空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>

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


public string FirstValue

{

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

XAML:


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


查看完整回答
反对 回复 2021-12-25
?
噜噜哒

TA贡献1784条经验 获得超7个赞

您可以编写一个DataTrigger或您可以扩展您的PIO_CARD类并添加一个属性,您可以将第一列绑定到:


public class ExtendedPIO_CARD : PIO_CARD

{

    public string FirstColumn

    {

        get

        {


            if (cflag == 8)

            {

                return "R";

            }

            if(cflag == 0)

            {

                return  string.Empty;

            }


            return "default";

        }

    } 

}


查看完整回答
反对 回复 2021-12-25
  • 2 回答
  • 0 关注
  • 242 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号