WPF 分别管理ListView列表中每一行数据

前段时间在做一个离线下载的时候,要手动点击列表中每一个病人的数据,保存到本地,然后在断网的情况下,仍然可以查看病人的电子病历,医嘱,检验等数据。网上一直没找到资料,就在这里做一个简单的总结。

wpf 这方面首先就是界面代码 直接上代码

<!--列表内容样式-->
    <Style TargetType="{x:Type ListViewItem}" x:Key="ListViewItemContainerStylePatientList">
        <Setter Property="FontSize" Value="18"/>
        <Setter Property="Height" Value="60"/>
        <Setter Property="Foreground" Value="#FF555555"/>
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <Border x:Name="Bd"  Background="{TemplateBinding Background}"   
                                BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" >
                        <GridViewRowPresenter Content="{TemplateBinding Content}" Columns="{TemplateBinding GridView.ColumnCollection}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter Property="Background" TargetName="Bd" Value="#FFCCCCCC"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

        <!--隔行变色-->
        <Style.Triggers>
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="ItemsControl.AlternationIndex" Value="1" />
                </MultiTrigger.Conditions>
                <Setter Property="Background" Value="#F5F5F5" />
            </MultiTrigger>
        </Style.Triggers>
    </Style>


<!--列头样式定义-->
    <Style x:Key="ListViewHeaderPatientList" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="FontSize" Value="18"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
                    <Grid Name="gird" Height="44">
                        <Grid.Background>
                            <SolidColorBrush Color="#FF394053"/>
                        </Grid.Background>
                        <Border Name="bd" Padding="{TemplateBinding Padding}">
                            <ContentPresenter  HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                        <!--<Thumb Name="PART_HeaderGripper" Template="{StaticResource ThumbColumnHeaderSpliter}" HorizontalAlignment="Right" Margin="0,0,-1,0"/>-->
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="gird" Property="Background">
                                <Setter.Value>
                                    <SolidColorBrush Color="#CC536680"/>
                                </Setter.Value>
                            </Setter>
                        </Trigger>


                        <Trigger Property="IsPressed" Value="True">
                            <Setter TargetName="gird" Property="Background">
                                <Setter.Value>
                                    <SolidColorBrush Color="#99536680"/>
                                </Setter.Value>
                            </Setter>
                        </Trigger>


                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

//上面style只是作为样式,方便运行粘贴。


<ListView Grid.Row="2" x:Name="LVPatients" Margin="36,18,36,0" ItemContainerStyle="{StaticResource ResourceKey=ListViewItemContainerStylePatientList}" 
                              GridViewColumnHeader.Click="LVPatients_Click" SelectionChanged="LVPatients_SelectionChanged"  AlternationCount="2"
                                BorderThickness="0" >

<ListView.View>
                                <GridView x:Name="pList" ColumnHeaderContainerStyle="{StaticResource ResourceKey=ListViewHeaderPatientList}">
                                    <GridViewColumn Header="姓名" DisplayMemberBinding="{Binding NAME}"  Width="100"/>
                                    <GridViewColumn Header="性别" DisplayMemberBinding="{Binding GENDER}" Width="65"/>
                                    <GridViewColumn Header="年龄" DisplayMemberBinding="{Binding AGE}" Width="70"/>
                                    <GridViewColumn Header="住院号/门诊号" DisplayMemberBinding="{Binding PATIENTSNO}" Width="140" />
                                    <GridViewColumn Header="类型" DisplayMemberBinding="{Binding TREATTYPE}" Width="90"/>
                                    <GridViewColumn Header="床号" DisplayMemberBinding="{Binding BEDNO}" Width="80"/>
                                    <GridViewColumn Header="科室" DisplayMemberBinding="{Binding DEPTNAME}" Width="140"/>
                                    <GridViewColumn Header="入院时间" DisplayMemberBinding="{Binding PATIENTSTARTTIME}" Width="215"/>
                                    <GridViewColumn x:Name="GCIN" Header="离线下载" Width="115">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Button Width="100" Background="Transparent" Height="50" Content="{Binding ISDOWNLOADOFFLINEDATA}"  Click="BtnOffLineData_Click"                                                    BorderThickness="0" FontSize="16" />
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                </GridView>
                            </ListView.View>
                        </ListView>


这里面就是需要在 <GridViewColumn>列下面加一个<GridViewColumn.CellTemplate>子模板,然后给一个数据模板 绑定数据
                                            <DataTemplate>
                                                <Button Width="100" Background="Transparent" Height="50" Content="{Binding ISDOWNLOADOFFLINEDATA}"  Click="BtnOffLineData_Click"                                                    BorderThickness="0" FontSize="16" />
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>

这里的点击事件就是分别处理每一行的点击事件 操作数据

        //这里就是拿到绑定数据该行对象 继续执行下一步操作
        private void BtnOffLineData_Click(object sender, RoutedEventArgs e)
        {
            var btn = sender as Button;      
            EntityPatient player = btn.DataContext as EntityPatient;
           
        }







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过修改WPF ListView每个Item的样式来实现自定义每一行的颜色。具体步骤如下: 1. 在XAML定义ListView的ItemContainerStyle,指定ItemContainerStyle为ListView.ItemContainerStyle属性的值。例如: ``` <ListView x:Name="myListView"> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <!--在这里定义Item的样式--> </Style> </ListView.ItemContainerStyle> </ListView> ``` 2. 在Style添加一个Trigger,根据Item的数据内容来设置颜色。例如: ``` <Style TargetType="ListViewItem"> <Style.Triggers> <DataTrigger Binding="{Binding Status}" Value="New"> <Setter Property="Background" Value="Green"/> </DataTrigger> <DataTrigger Binding="{Binding Status}" Value="Completed"> <Setter Property="Background" Value="LightGray"/> </DataTrigger> </Style.Triggers> </Style> ``` 在这个例子,根据绑定到ListViewItem的数据对象的Status属性的值来设置Item的背景颜色。 希望这个回答对你有帮助! ### 回答2: 要自定义WPF ListView一行的颜色,可以使用ListView的ItemContainerStyle属性来实现。 首先,在XAML代码,创建一个样式资源并应用于ListView的ItemContainerStyle属性,代码如下: ```xml <ListView> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="Background" Value="LightGray"/> <Style.Triggers> <Trigger Property="ItemsControl.AlternationIndex" Value="1"> <Setter Property="Background" Value="White"/> </Trigger> </Style.Triggers> </Style> </ListView.ItemContainerStyle> </ListView> ``` 上述代码,我们定义了一个样式资源,并将它应用到ListView的ItemContainerStyle属性上。在样式,我们设置了默认的背景颜色为LightGray,然后使用Trigger来切换偶数和奇数的背景颜色。当ItemsControl.AlternationIndex属性的值为1时,表示奇数,我们设置背景颜色为White。 如果想要进一步自定义每的颜色,可以修改Style的Setter对象的Value属性值。 需要注意的是,为了使触发器生效,ListView的ItemsPanel需要设置为一个ItemsControl,例如Grid,如下所示: ```xml <ListView> <ListView.ItemsPanel> <ItemsPanelTemplate> <Grid/> </ItemsPanelTemplate> </ListView.ItemsPanel> <!-- 此处省略数据绑定部分 --> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <!-- 此处省略样式设置部分 --> </Style> </ListView.ItemContainerStyle> </ListView> ``` 以上就是通过ItemContainerStyle属性自定义WPF ListView一行颜色的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值