1

ComboBox の入力テキストの長さを設定するにはどうすればよいですか?

たとえば、20 より長くならないようにします。

4

4 に答える 4

1

私は PreviewKeyDown イベントを使用しました。非常にシンプルで、警告などを表示できます。
以下のメソッドを ComboBox.PreviewKeyDown += イベントに登録します
。ユーザーがスペースを押しても KeyDown イベントは発生しません。

private void ComboBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (ComboBox.Text.Length > 19) // allow max 20 chars
    {
        if (e.Key != Key.Back) // allow removing chars
        {
            e.Handled = true; // block any additional key press if there is more than allowed max
            System.Media.SystemSounds.Beep.Play(); // optional: beep to let user know he is out of space :)
        }
    }
}
于 2014-12-05T00:41:51.660 に答える
1

ストーリーを完成させるために:

次の 2 つのオプションがあります。

  • Combobox は明らかTextBoxにそのテンプレートに含まれています。Combobox Templateおそらくそれを介して、TextBoxにアクセスする方法を見つける必要がありますMaxLength

  • おそらく、Combobox.Text を viewmodel プロパティにデータバインドします。INotifyDataErrorInfo を使用するか、setter から例外をスローすることによって、viewmodel で検証を行うことができます。許可されている最大長を超えると、エラー メッセージが表示されます。これはUXの観点から優れていると思います。残念ながら、まだ INotifyDataErrorInfo を使用していない場合、これを機能させるにはかなりの作業が必要です。

于 2015-09-21T07:26:27.623 に答える
0

ComboBoxクラス(MSDN):

<ComboBox>
  Items
</ComboBox>

入力する長さは、中に入れるアイテムによって異なります。したがって、そのプロパティを設定することはできません。ただし、テキスト ボックスには最大長があります。

<TextBox MaxLength="20">
  Text
</TextBox>
于 2013-07-17T12:32:49.453 に答える
-1

XAMLを介して簡単な解決策を見つけました。ComboBox リソースでは、テキスト ボックスのスタイルを設定し、setter set maxlenth を介して設定できます。

<ComboBox Name="comboBox" Width="100" IsEditable="True">
    <ComboBox.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="MaxLength" Value="yourValue"/>
        </Style>
    </ComboBox.Resources>
</ComboBox>

編集: これは Actipro ComboBox で動作します。これを機能させる通常のコンボボックスについては、こちらをご覧ください

于 2013-07-18T09:52:20.810 に答える