簡體   English   中英

僅單向綁定到TextBox

[英]Binding to TextBox only one-way

我需要將List<Key>綁定到TextBox 我編寫了一個將List<Key>轉換為字符串的轉換器( ConvertBack方法只會引發異常-未使用)。 問題是,當我嘗試使用此轉換器時,它顯示了一個錯誤: “ IValueConverter”的TypeConverter不支持從字符串轉換。 看來是由於嘗試將stringTextBox轉換為List<Key>,但我不想這樣做(用戶不會“寫入”此TextBox )。 我已經考慮過使用TextBox以外的其他東西-也許是TextBlock ,我認為它可以解決問題,但是出於某些其他原因,我想使用TextBox

我要綁定的屬性:

public partial class Settings : Window
{
    public List<Key> hotkeyCapture_keys { get; set; }
    ...

轉換器:

class ListKeyToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Join(" + ", (List<Key>)value);
    }
    ...

和文本框:

<TextBox ... Text="{Binding hotkeyCapture_keys, Converter=ListKeyToStringConverter}" />

嘗試對其進行構建時,該應用程序會立即關閉並顯示“ XamlParseException created”

誰能告訴我如何解決這個問題?

謝謝

不知道這是否真的是您想要做的。 如果您想要一個只讀的TextBox那么已經有其他方法可以使用了。 您提到的一個是RichTextBox 但是我假設您知道您想要什么。

您首先要在Convert使用它(不要忘記using System.Linq;進行添加):

return string.Join(" + ", ((List<Key>)value).Select(x=> x.Name)); 
//where Name is a public property in type Key

其次-賓果,默認情況下TextBox.Text綁定Mode=TwoWay 您可以將其更改為OneWayOneTime

<TextBox ... Text="{Binding hotkeyCapture_keys, Mode=OneTime, Converter=ListKeyToStringConverter}" />

另外,您將引發異常。 必須處理一些異常。 沒有什么是。 無需在ConvertBack引發異常,只需調用return null;

將您在轉換器中的返回值更改為

 return String.Join(" + ", ((List<Key>)value).ToArray());

您可以看看使用List <string>的WPF文本塊綁定

暫無
暫無

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

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