wpfベースのテキストボックスにはフラットボーダースタイルが必要です... winformsテキストボックスBorderStyle.FixedSingleのようにこれを取得する簡単な方法がないことに本当に驚いています
wpfテキストボックスでこれを行う簡単な方法はありますか
これを行う方法は、コントロールテンプレートを使用して自分で境界線を描画することです。これはさまざまな方法で行うことができます。ここでは、いくつか見ていきます。
クイックハックアプローチ:
<TextBox>
<TextBox.Template>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="1"/>
<TextBox Margin="1" Text="{TemplateBinding Text}" BorderThickness="0"/>
</Grid>
</ControlTemplate>
</TextBox.Template>
</TextBox>
そして、リソースを使用しています...
<ResourceDictionary>
<Color x:Key="detailMark">#FFA1A9B3</Color>
<SolidColorBrush x:Key="detailMarkBrush" Color="{StaticResource ResourceKey=detailMark}" />
<Style x:Key="flatTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="1"/>
<TextBox Margin="1" Text="{TemplateBinding Text}" BorderThickness="0"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
次に、次のスタイルを使用できます。
<TextBox Style="{StaticResource ResourceKey=flatTextBox}" />
<TextBox BorderThickness="1" BorderBrush="Black">
黒または灰色でこれを試してみてください
これは私にとってより良い方法であり、デフォルトのテンプレートを上書きするために、境界線のあるカスタムテンプレートを作成します。
そして最も重要なのはScrollViewer
をPART_ContentHost
、内側のTemplatePart
に合わせ、その他の機能についてはデフォルトのように機能します。
[〜#〜] msdn [〜#〜] の例に似ています:
<Style TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
<Border CornerRadius="2" Padding="2" Background="#19212F" BorderBrush="Red" BorderThickness="1">
<ScrollViewer Margin="0" x:Name="PART_ContentHost" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>