您的位置:首页 > 其它

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

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

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"                                  
4000
                 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;

           

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息