一、项目背景:

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

其实只有一个要求:

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

二、项目讲解

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/>
一、参与交易中心上市品种的交易对交易风险判断、风险承受、风险控制有较高要求;不具备相应风险判断、风险承受和风险控制能力的交易客户,谨慎入市。
<LineBreak/>
<LineBreak/>
二、因交易有较高风险,下列资金不适合入市交易:
用于治疗疾病、养老、购房、缴纳学费等生活必须支出的资金;贷款、借款及受他人委托管理的非自有资金;
交易中心建议交易客户入市交易的资金总量不应超过自有存量资金的30%。
<LineBreak/>
<LineBreak/>
三、交易客户应当妥善保管自有交易账号的交易密码、资金密码及其他账户密码,不应委托任何机构或个人进行交易和资金管理。
<LineBreak/>
<LineBreak/>
四、交易客户应认真学习了解现货交易市场的规则和行情,根据个人投资经验、投资目标、财务状况自主做出交易选择,不应轻信任何机构和个人做出的收益承诺、行情分析和交易操作建议。
<LineBreak/>
<LineBreak/>
五、上述风险提示为交易开户前必读之内容,个人交易客户开户成功视为已完全理解交易中心风险提示的内容,并承诺遵守。个人交易客户因违反上述承诺导致亏损和其他交易损失的,交易中心不承担任何责任。
<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的事件,我们把事件放在资源文件里:

 <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
{ }
}

三、结果截图

很简单,希望有对需要的有帮助。

WPF RichTextBox 做内容展示框 滚动条控制判定是否阅读完成的更多相关文章

  1. WPF RichTextBox读取存储文本的方法和常用属性

    1. 取得已被选中的内容: (1)使用 RichTextBox.Document.Selection属性(2)访问RichTextBox.Document.Blocks属性的“blocks”中的Tex ...

  2. WPF RichTextBox 控件常用方法和属性

    以下内容转自 http://blog.csdn.net/yulongguiziyao/article/details/25330551. 1. 取得已被选中的内容: (1)使用 RichTextBox ...

  3. WPF RichTextBox相关总结

    由于公司涉及到聊天对话框的功能,就想到了RichTextBox,查阅相关资料,总结下: 一.RichTextBox的内容相关的类 1.1RichTextBox的内容结构 RichTexBox是个可编辑 ...

  4. WPF RichTextBox自动调整高度

    原文:WPF RichTextBox自动调整高度 大概两年前的这个时间段,当时做项目遇到了一个问题:环境VS2005.WinForm,需要RichTextBox根据内容自动调整高度.当时用了各种方法都 ...

  5. WPF RichTextBox 当前光标后一个字符是文档的第几个字符

    WPF RichTextBox 当前光标后一个字符是文档的第几个字符 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-05 参考: TextP ...

  6. Selenium入门11 滚动条控制(通过js)

    这一节要有js基础.做web端的UI自动化必须要有html,css,javascript前端基础. 滚动条控制: 1 移动垂直滚动条 document.documentElement.scrollTo ...

  7. WPF RichTextBox 禁止换行

    原文:WPF RichTextBox 禁止换行 这个问题困扰了好久,进过不断的努力,终于解决了           <RichTextBox Margin="0,44,10,0&quo ...

  8. 将RichTextBox的内容直接写入数据库:

    将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) {    System.IO.Memory ...

  9. WPF RichTextBox的使用总结

    RichTextBox内容模型 RichTextBox 支持基于块的内容模型. RichTextBox   的内容属性为 Blocks,这是 Paragraph 元素的集合Paragraph元素可包含 ...

随机推荐

  1. F#之旅9 - 正则表达式

    今天,cozy群有个群友发了条正则,问正则匹配相关的问题.虽然他的问题用html selector去处理可能更好,但是我也再一次发现:我忘了正则怎么写的了! 忘掉正则是有原因的,这篇文章会简单记录下F ...

  2. LD算法获取字符串相似度

    一个如何识别相似语句的问题,于是上网找了找,一个叫Levenshtein Distance的算法比较简单,就写了段代码实现了一下,效果还不错. 这个算法是一个俄国人Lvenshtein提出的,用于计算 ...

  3. OpneCv2.x 模块结构

    转自:http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后 ...

  4. 使用 CommandLineApplication 类创建专业的控制台程序

    闲话 在很久很久以前,电脑是命令行/终端/控制台的天下,那屏幕上的光标在行云流水般的键盘敲击下欢快地飞跃着,那一行行的字符输出唰唰唰地滚动着--直到 Windows 95 的出现(那时候我还不知道苹果 ...

  5. js获取css中的样式

    众所周知,obj.style只能够获取 <div id="a" style="width:100px;"></div> 结构上的样式 如 ...

  6. 微服务中的netty

    一般使用netty主要是整个netty流程的理解,实际开发中服务端.客户端参数的配置,以及连接 handle的管理是关键,再有就是encode和decode编码.解码. 服务端流程图 客户端流程图包含 ...

  7. BZOJ 3262 陌上花开 ——CDQ分治

    [题目分析] 多维问题,我们可以按照其中一维排序,然后把这一维抽象的改为时间. 然后剩下两维,就像简单题那样,排序一维,树状数组一维,按照时间分治即可. 挺有套路的一种算法. 时间的抽象很巧妙. 同种 ...

  8. Angular内置指令(一)

    要注意的是不要把自己开发的指令以ng开头,以免与内置指令冲突  目录:ng-disabled,ng-readonly,ng-checked,ng-selected,ng-href,ng-src,ng- ...

  9. Android四种点击事件和五中存储方式

    Android点击事件的四种实现方式 1.内部类实现onClickListenter接口 bt_login.setOnClickListener(new MyListener()); class My ...

  10. 前端CSS规范整理_转载、、、

    一.文件规范 1.文件均归档至约定的目录中. 具体要求通过豆瓣的CSS规范进行讲解: 所有的CSS分为两大类:通用类和业务类.通用的CSS文件,放在如下目录中: 基本样式库 /css/core 通用U ...