2012-04-27 9 views
0

固定テキストをTextBoxに動的に追加するにはどうすればよいですか? 「固定テキスト」とは、ユーザーの入力では削除できないテキストを意味します。例えばTextBoxの固定テキスト

、CMDでのパス:

C:\Program Files>cd .. 
C:\> 
+0

Huh? IsReadOnlyまたはIsEnabledプロパティを使用して、ユーザーが値を変更できないようにすることができます。理解しやすいように質問を言い換える必要があります。また、試したことと結果が何であるかを列挙する必要があります。 –

+0

それで、ユーザーが追加できるテキストボックスにテキストを固定したいのですか? – carny666

答えて

0

のTextBox IsReadOnlyの=真のあなたは動的にテキストを読み込むとき? MVVMバインドIsReadOnlyをViewModelのプロパティに使用すると、ViewModelによってテキストが入力されるとき

0

代わりにテキストブロックを使用できます。 テキストボックスを使用する必要がある場合は、読み取り専用でIsReadOnlyプロパティを「True」に変更することができます。

2

私は編集可能なテキストボックスが必要であると仮定しています。ユーザーは編集できません。もしそうなら、これは動作しているようです - Blendで抽出されたとして、それが標準のテキストボックスのスタイルに基づいています...

あなたのXAMLのルートに次の名前空間宣言を持っている必要があります:

 xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" 

は、このテンプレートを使用します:

<ControlTemplate TargetType="{x:Type TextBox}"> 
     <Microsoft_Windows_Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock VerticalAlignment="Center">This is fixed:</TextBlock> 
      <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
      </StackPanel> 
    </Microsoft_Windows_Themes:ListBoxChrome> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

カスタムコントロールまたはユーザーコントロールでこれをラップする場合は、プログラムで固定テキストをカスタムプロパティで設定できます。

-1
private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (textBox1.SelectionStart < LengthOfFixedString) 
     e.SuppressKeyPress = true; 
} 
+0

これにはいくつかの欠点があります。マウスを使って切り取り/削除を停止することはなく、ユーザーが固定テキストにカーソルを置くとカーソルが再び戻ってくることはありません。 –

関連する問題