簡體   English   中英

插入符號在WPF自定義TextBox控件中的錯誤位置

[英]Caret is on wrong place in WPF custom TextBox control

我試圖創建一個自定義控件(從TextBox繼承)。 主要目標是在用戶鍵入時自動格式化。 此coontrol僅接受數字,並使用數字分組分隔符和十進制分隔符自動完成輸入。

Generic.xaml的內容如下:

<Style TargetType="{x:Type local:PrecisionTextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:PrecisionTextBox}">
                <TextBox Text="{Binding Path=TextContent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>   
 </Style>

還有TextContent屬性:

public string TextContent
    {
        get
        {                
            return this.Value.ToString("N" + Precision);  
        }
        set
        {
            if (value != textContent)
            {
                textContent = value;

                if (textContent.Contains(MultiplierChar))
                {
                    textContent = textContent.Replace(MultiplierChar, "000000");
                }
                try
                {
                    if (!string.IsNullOrEmpty(textContent))
                    {
                        this.Value = Convert.ToDecimal(textContent);
                    }                       

                }
                catch
                {
                    this.Value = 0m;
                }
            }
        }
    }

它除了一件事情外,效果很好。 插入符號...我鍵入了一個'0'字符,一切正常,直到:

還好

之后,我又輸入了一個“ 0”數字,並且插入符號在錯誤的位置:

壞

我希望插入符在下一個字符附近。我想我知道原因。 輸入從我那里收到3個字符(默認情況下顯示0.00),並且插入標記位於3.位置。 但我想同步此插入符號。 我試圖設置CaretIndex和SelectionStart屬性,但是沒有一個起作用。

歡迎任何建議。 謝謝。

可能是您應該使用值轉換器而不是進行字符串內替換

我在這里解決了這個問題: 具有格式的WPF文本框綁定

那不是完全相同的數字格式,只是一個帶有千位分隔符的數字字符串,它沒有小數位,但是我敢肯定,您可以更改代碼以適合您的格式需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM