WinStore控件之TextBox

1 TextBox簡單實例

內容摘要:包含文本的選中,彈出什麼類型的鍵盤,回車隱藏鍵盤,web

<Grid Name="root" Background="Transparent">
            <StackPanel Margin="120 0 0 0">
                <!--
                AcceptsReturn - 是否接受回車符
                IsReadOnly - 是否只讀
                SelectedText - 選中的文本內容
            -->
                <TextBox Name="txtDemo" AcceptsReturn="True" TextWrapping="Wrap" MaxLength="50" TextAlignment="Center" HorizontalAlignment="Left" Width="200" Height="100" Text="webabcd" Loaded="txt_Loaded_1" />

                <!--用於顯示 txt 中被選中的文本內容-->
                <TextBox Name="txtReadOnly" IsReadOnly="True" Text="{Binding SelectedText, ElementName=txt}" HorizontalAlignment="Left" Width="200" Height="100" Margin="0 10 0 0" />

                <!--
                InputScope - 指定 SIP(Soft Input Panel)的類型
            -->
                <TextBox InputScope="Number" FlowDirection="RightToLeft" HorizontalAlignment="Left" Margin="0 10 0 0" />

                <!--
                後臺設置此 TextBox 的 InputScope
            -->
                <TextBox Name="txtInputScope" HorizontalAlignment="Left" Margin="0 10 0 0"  KeyDown="txtInputScope_KeyDown_1"/>
            </StackPanel>
        </Grid>

後臺代碼:網絡

private void txt_Loaded_1(object sender, RoutedEventArgs e)
        {
            // 讓 txtDemo 獲取焦點
            txtDemo.Focus(Windows.UI.Xaml.FocusState.Programmatic);
            // 將 txtDemo 中的文本從第 3 個字符開始的一共 4 個字符設置爲選中狀態
            txtDemo.Select(3, 4);

            /*
             * 與文本操做相關的屬性和方法還有: SelectionStart, SelectionLength, SelectedText, SelectAll(), Select(int start, int length), GetRectFromCharacterIndex(int charIndex, bool trailingEdge)
             */
        }

        void TextBoxDemo_Loaded(object sender, RoutedEventArgs e)
        {
            // 設置 txtInputScope 的 InputScope
            InputScope scope = new InputScope();
            InputScopeName name = new InputScopeName();

            name.NameValue = InputScopeNameValue.ChineseFullWidth;
            scope.Names.Add(name);

            txtInputScope.InputScope = scope;
        }

        private void txtInputScope_KeyDown_1(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
        {
            // 判斷用戶是否按下了 SIP 上的回車鍵
            if (e.Key == VirtualKey.Enter)
            {
                // 轉移焦點,虛擬鍵盤會自動隱藏
                txtReadOnly.Focus(FocusState.Programmatic);
            }
        }

二、密碼框

<!--            
                Password - 密碼值
                PasswordChar - 密碼框所顯示顯示的密碼替代字符。默認值爲「●」
                IsPasswordRevealButtonEnabled - 是否顯示「顯示密碼明文」按鈕
            -->
                <PasswordBox Name="pwd" Width="200" HorizontalAlignment="Left" MaxLength="16" IsPasswordRevealButtonEnabled="True" />

三、RichEditBox富文本編輯框

內容摘要:富文本框支持文本顏色,文本加粗,文本斜體,還有文本搜索,高亮顯示等。架構

<Grid Name="root" Background="Transparent">
            <StackPanel>
                <StackPanel Orientation="Vertical">
                    <Button Name="btnBold" Content="加粗" Click="btnBold_Click_1" Margin="0 0 10 0" />
                    <Button Name="btnItalic" Content="斜體" Click="btnItalic_Click_1" Margin="0 0 10 0" />
                    <TextBox x:Name="txtSearch" Margin="0,0,164,0"/>
                    <Button Name="btnSearch" Content="搜索" Click="btnSearch_Click_1" />
                </StackPanel>
                <RichEditBox x:Name="txtEditor" Width="239" Height="240" HorizontalAlignment="Left" Margin="0 10 0 0" />
            </StackPanel>
 </Grid>
private void btnBold_Click_1(object sender, RoutedEventArgs e)
        {
            // 獲取選中的文本
            ITextSelection selectedText = txtEditor.Document.Selection;
            if (selectedText != null)
            {
                // 實體化一個 ITextCharacterFormat,指定字符格式爲加粗
                ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
                charFormatting.Bold = FormatEffect.Toggle;

                // 設置選中文本的字符格式
                selectedText.CharacterFormat = charFormatting;
            }
        }

        private void btnItalic_Click_1(object sender, RoutedEventArgs e)
        {
            // 獲取選中的文本
            ITextSelection selectedText = txtEditor.Document.Selection;
            if (selectedText != null)
            {
                // 實體化一個 ITextCharacterFormat,指定字符格式爲斜體
                ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
              //  charFormatting.FontStyle = (FontStyle)Enum.Parse(typeof(FontStyle), "Italic", true);
                charFormatting.Italic = FormatEffect.Toggle;

                // 設置選中文本的字符格式
                selectedText.CharacterFormat = charFormatting;
            }

        }
        // 保存已經被高亮的 ITextRange
        List<ITextRange> _highlightedWords = new List<ITextRange>();
        // 高亮顯示用戶搜索的字符

        private void btnSearch_Click_1(object sender, RoutedEventArgs e)
        {
            // 清除高亮字符的高亮效果
            ITextCharacterFormat charFormat;
            for (int i = 0; i < _highlightedWords.Count; i++)
            {
                charFormat = _highlightedWords[i].CharacterFormat;
                charFormat.BackgroundColor = Colors.Transparent;
                _highlightedWords[i].CharacterFormat = charFormat;
            }
            _highlightedWords.Clear();

            // 獲取所有文本,並將操做點移動到文本的起點
            ITextRange searchRange = txtEditor.Document.GetRange(0, TextConstants.MaxUnitCount);
            searchRange.Move(0, 0);

            bool textFound = true;
            do
            {
                // 在所有文本中搜索指定的字符串
                if (searchRange.FindText(txtSearch.Text, TextConstants.MaxUnitCount, FindOptions.None) < 1)
                {
                    textFound = false;
                }
                else
                {
                    _highlightedWords.Add(searchRange.GetClone());

                    // 實體化一個 ITextCharacterFormat,指定字符背景顏色爲黃色
                    ITextCharacterFormat charFormatting = searchRange.CharacterFormat;
                    charFormatting.BackgroundColor = Colors.Yellow;

                    // 設置指定文本的字符格式(高亮效果)
                    searchRange.CharacterFormat = charFormatting;
                }
            } while (textFound);


        }
    }

四、RichTextBlock 富文本顯示控件

摘要:能夠在文本內部嵌入各類控件app

 

<StackPanel >
            <!--
                RichTextBlock - 用於顯示富文本的控件
                    Blocks - 富文本的內容
                        Paragraph - 每個 Paragraph 表明一段內容,其繼承自 Block
                            Inlines - 每一個 Paragraph 下都有一個內聯元素集合,其用法與 TextBlock 的 Inlines 基本相同,不一樣之處在於只有在 RichTextBlock 中才能使用 InlineUIContainer
                            TextIndent - 指定此段文本的首行的縮進量
            
                注:其餘 n 多屬性基本同 TextBlock
            -->
            <RichTextBlock FontSize="14.667" HorizontalAlignment="Left">
                <RichTextBlock.Blocks>
                    <Paragraph TextIndent="20">
                        Windows Phone 8採用和Windows 8相同的針對移動平臺精簡優化
                        NT內核而且內置諾基亞地圖,這標誌着移動版Windows Phone將提早
                        與Windows系統同步,部分Windows8應用能夠更方便的移植到手機           
                    </Paragraph>
                    <Paragraph>
                        <InlineUIContainer>
                            <StackPanel HorizontalAlignment="Left">
                                <TextBlock Text="顯示一張圖片" />
                                <Image Source="/Assets/Logo.png" Width="100" Height="100" />
                            </StackPanel>
                        </InlineUIContainer>
                    </Paragraph>
                </RichTextBlock.Blocks>
            </RichTextBlock>
        </StackPanel>

五、RichTextBlockOverflow 處理富文本框溢出

<StackPanel  Orientation="Vertical">

<RichTextBlock HorizontalAlignment="Left" Width="390" Height="100" OverflowContentTarget="{Binding ElementName=txtOverflow}">
 <Paragraph>
                    一打開Windows 8計算機,用戶就會發現明顯的變化。呈如今用戶眼前的再也不是熟悉的桌面,而是由漂亮、現代化的瓷貼(tile)以及最適合在觸控屏上運行的全屏應用構成的環境。這就是「開始」屏,它取代了Windows用戶熟悉的「開始」菜單。開始屏不僅是菜單,而是佔據整個顯示屏的一個完整的計算環境,有本身獨立的應用和控件。用戶仍然可使用過去的桌面和老式軟件,在Windows 8中,桌面就像另一款應用,用戶能夠經過點擊開始屏上的圖標或按鈕運行桌面。
這是一個大膽的舉措,基於瓷貼的環境很是好,將受到用戶的歡迎。這一環境讓人感受很天然,特別是在觸控屏設備上,使Windows進入了平板電腦時代。它可能甚至標誌着一個漫長過渡期的開始,新設計將逐步取代原來的設計,固然,這取決於微軟吸引新型應用的速度。
Windows將提供兩種徹底不一樣的用戶體驗。微軟的目的是提供一款既能在傳統PC,也能在平板電腦上運行的操做系統,包括採用觸控方式操做的天氣應用和採用鼠標操做的Excel都能在Windows 8中運行。這一策略徹底不一樣於蘋果,蘋果的iPad平板電腦和Mac計算機運行不一樣的操做系統。
雙環境策略可能會讓傳統PC用戶感到困惑。新、舊兩種環境均可以經過觸控、鼠標、鍵盤進行操做,但觸控更適合新環境,鼠標、鍵盤更適合舊環境。
Windows 8將帶有兩種不一樣版本的IE,許多功能也不相同。例如,新型應用一般缺少傳統應用中的標準菜單、工具條、改變尺寸和關閉按鈕。微軟堅信用戶困惑是暫時的,將被運行Office等傳統辦公軟件的能力所抵消。Office不能在iPad或Android平板電腦上運行。
Windows 8可能給用戶帶來更多困惑。Windows 8有兩種版本:一個版本面向標準的X86 PC,另外一款版本――Windows RT面向配置ARM架構芯片的設備。
固然,兩種版本之間的區別很大。在X86設備上,用戶能夠運行新型應用,也能夠經過桌面環境運行傳統的Windows應用。可是,用戶不能在ARM設備上安裝和運行傳統Windows應用。能同時在X86和ARM設備上運行的惟一一款主要軟件是一款新版Office,但ARM版Office不包含Outlook。用戶能夠經過網絡商店下載全部新型應用。
微軟將首次推出自主品牌平板電腦Surface,與傳統硬件合做夥伴推出的Windows 8和Windows RT平板電腦競爭。
</Paragraph>
</RichTextBlock>
<RichTextBlockOverflow x:Name="txtOverflow" Height="100" OverflowContentTarget="{Binding ElementName=txtOverflow2}"  />

            <!--
                RichTextBlock - 富文本顯示框
                    OverflowContentTarget - 當 RichTextBlock 中的內容溢出時,將溢出文字綁定到指定的 RichTextBlockOverflow 中
        
                RichTextBlockOverflow - 用於顯示 RichTextBlock 或其餘 RichTextBlockOverflow 中的溢出文字
                    OverflowContentTarget - 當此 RichTextBlockOverflow 中的內容也溢出時,將溢出文字綁定到指定的其餘 RichTextBlockOverflow 中
                    HasOverflowContent - 是否有溢出內容可顯示
                    ContentSource - 源內容,返回對應的 RichTextBlock
            -->
<RichTextBlockOverflow Name="txtOverflow2" Width="390" Height="100" HorizontalAlignment="Left" OverflowContentTarget="{Binding ElementName=txtOverflow3}"/>

<RichTextBlockOverflow Name="txtOverflow3" Height="100" Margin="0,0,29,0" />
</StackPanel>
相關文章
相關標籤/搜索