WPF RichTextBox 作内容展现框 滚动条控制断定是否阅读完成

1、项目背景:

最近,作项目,由于是金融项目,客户登陆交易的时候,有一个提示框,就是告知客户要“入市需谨慎”等等,想必你们都遇到这样的场景,固然,这种提示是没人会看的,不过做为交易所,这样的提示又必不可少的。html

其实只有一个要求:前端

         必须客户读完“肯定”按钮和CheckBox才会生效----客户只要把滚动条拉倒底部,咱们就认为他已经读完了app

2、项目讲解

1.前端代码

前端代码,没有什么好解释的,很简单,就是一个RichTextBox学习

 <RichTextBox Grid.Row="0" Grid.ColumnSpan="2" x:Name="rtxtRiskContent"  HorizontalAlignment="Left" 
                     AllowDrop="True" IsReadOnly="True" VerticalAlignment="Top" >
            <FlowDocument x:Name="fdRiskContent" >
                <Paragraph TextBlock.FontSize="20" TextAlignment="Center" TextBlock.FontWeight="Bold">
                    风 险 提 示 书
                </Paragraph>
                <Paragraph TextBlock.FontSize="14">
                    <TextBlock Padding="20 0,0,0" TextWrapping="Wrap" Text="都普特商品电子交易中心有限公司(如下简称"交易中心")上市商品的"/>
                    交易存在较大的风险,为控制交易客户(包括但不限于企业交易客户、我的交易客户)的风险,维护交易客户的合法权益,交易中心特做如下风险提示:
                    <LineBreak/>
                    <LineBreak/>
                    1、参与交易中心上市品种的交易对交易风险判断、风险承受、风险控制有较高要求;不具有相应风险判断、风险承受和风险控制能力的交易客户,谨慎入市。
                    <LineBreak/>
                    <LineBreak/>
                    2、因交易有较高风险,下列资金不适合入市交易: 
用于治疗疾病、养老、购房、缴纳学费等生活必须支出的资金;贷款、借款及受他人委托管理的非自有资金; 
交易中心建议交易客户入市交易的资金总量不该超过自有存量资金的30%。
                    <LineBreak/>
                    <LineBreak/>
                    3、交易客户应当妥善保管自有交易帐号的交易密码、资金密码及其余帐户密码,不该委托任何机构或我的进行交易和资金管理。
                    <LineBreak/>
                    <LineBreak/>
                    4、交易客户应认真学习了解现货交易市场的规则和行情,根据我的投资经验、投资目标、财务情况自主作出交易选择,不该轻信任何机构和我的作出的收益承诺、行情分析和交易操做建议。
                    <LineBreak/>
                    <LineBreak/>
                    5、上述风险提示为交易开户前必读以内容,我的交易客户开户成功视为已彻底理解交易中心风险提示的内容,并承诺遵照。我的交易客户因违反上述承诺致使亏损和其余交易损失的,交易中心不承担任何责任。
                    <LineBreak/>
                </Paragraph>
            </FlowDocument>
        </RichTextBox>
        <CheckBox x:Name="chkRiskTip" Grid.Row="2" Grid.ColumnSpan="2" IsEnabled="False" Content="本人已仔细阅读彻底理解风险提示的全部内容,全面了解交易风险,并承诺按风险提示书
控制交易风险,因违反风险提示书的建议进行开户交易致使损失的,一切损失本人自愿承担。" />
        <Button x:Name="btnAgreen" Grid.Row="4" Grid.Column="0" Width="100" Content="同 意"  IsEnabled="False" ></Button>
        <Button x:Name="btnNoAgreen" Grid.Row="4" Grid.Column="1" Width="100" Content="不一样意"  ></Button>
        <Label Margin="0,0,100,0" HorizontalAlignment="Right" Grid.Row="6" Grid.ColumnSpan="2" Foreground="Red"  Content="提示:完整阅读风险提示书后才可操做按钮" />

 2.后台实现

咱们主要要实现RichTextBox的事件,咱们把事件放在资源文件里:this

 <Grid.Resources>
            <Style TargetType="{x:Type RichTextBox}">
                <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
                <EventSetter Event="ScrollViewer.ScrollChanged" Handler="RichTextBox_ScrollChanged"/>
            </Style>
        </Grid.Resources>

 3.实现事件

 private void RichTextBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            try
            {
                ScrollViewer sv = e.OriginalSource as ScrollViewer;
                if (sv != null && e.VerticalChange != 0)
                {
                    if (sv.VerticalOffset == sv.ExtentHeight - sv.ViewportHeight)//到底
                    {
                        this.chkRiskTip.IsEnabled = true;
                    }
                }
            }
            catch
            { }
        }

 3、结果截图

很简单,但愿有对须要的有帮助。3d

相关文章
相关标签/搜索