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

相關文章
相關標籤/搜索