2

私はWPFが初めてです。私のプロジェクトでは、usericon を使用してユーザー名のテキスト ボックス ボックスを試しました。

私の XAML コード:-

> <TextBox Height="30" Width="180" Margin="67,123,256,158">
>             <TextBox.Background>
>                 <ImageBrush  ImageSource="Images/User.png" Stretch="None" AlignmentX="Left" AlignmentY="Center" />
>             </TextBox.Background>
>         </TextBox>

ここに画像の説明を入力

しかし、ユーザー名を入力すると、テキスト ボックス カーソルが左端から始まり、2、3 文字が表示されず、見苦しくなります。(画像を参照)テキストボックスでこの背景画像を分離する方法。

編集 1-

>  <Canvas>
>         <DockPanel Canvas.Left="115" Canvas.Top="64">
>             <Button BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="23">
>                 <Button.Background>
>                     <ImageBrush  ImageSource="Images/User.png" Stretch="None" AlignmentX="Left" AlignmentY="Center" />
>                 </Button.Background>
>             </Button>
>             <TextBox Height="28" Width="115" HorizontalAlignment="Stretch" Background="Transparent"/>
>         </DockPanel>
>         </Canvas>

ここに画像の説明を入力

アドバイス通りやってみました。しかし問題は、ボタンとテキスト ボックスが別々に表示されることです。texbox のユーザー アイコンのようには見えません。カーソルをボタンに移動すると、ユーザーアイコンが非表示になります。私のコードを改善するのを手伝ってください..

編集2と回答:-

Button Hover Effect Disable のグリッド リソースに以下のコードを追加します。

<Style x:Key="ButtonWithoutHover" TargetType="Button">
                <Setter Property="OverridesDefaultStyle" Value="True"/>
                <Setter Property="Margin" Value="0"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border Name="border" 
                            BorderThickness="0"                                                        
                            Background="{TemplateBinding Background}">
                                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="border" Property="BorderBrush" Value="Black" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>     

そして、これをwpfウィンドウXAMLに追加します

<Canvas >
            <Border BorderThickness="2" BorderBrush="DarkBlue" Canvas.Left="307" Canvas.Top="65">
            <DockPanel Canvas.Left="115" Canvas.Top="30">
                <Button Style="{StaticResource ButtonWithoutHover}" BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="23">
                    <Button.Background>
                        <ImageBrush  ImageSource="Images/User.png" Stretch="None" AlignmentX="Left" AlignmentY="Center" />
                    </Button.Background>
                </Button>
                <TextBox FontSize="20"  BorderThickness="0" Height="28" Width="115" HorizontalAlignment="Stretch" Background="Transparent"/>
            </DockPanel>
            </Border>           
        </Canvas>

ここに画像の説明を入力

4

2 に答える 2

1

次のようにDock Panelで試すことができます

 <DockPanel>
     <Button BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right"    Height="28" Width="25" Margin="200,10,10,10">     
      </Button>
     <TextBox Text="User" FontSize="16" HorizontalAlignment="Stretch" Background="Transparent" Height="28" Width="200" Margin="-80,10,10,10"/>
   </DockPanel>

これはあなたを助けるかもしれません

于 2013-10-31T07:51:40.540 に答える
1

この質問に関する Asryael の回答をご覧ください。テンプレートを編集することなく、同様の問題を解決します。Asryael のソリューションには、追加のスタイリングが必要です。

以下を試すこともできます。単にパディングを追加するだけです。

プレビュー

<TextBox Padding="16,2" Width="115" Height="28">
    <TextBox.Background>
        <ImageBrush ImageSource="Images/User.png" Stretch="None" AlignmentX="Left"/>
    </TextBox.Background>
</TextBox>
于 2013-10-31T07:38:44.357 に答える