2012-12-18 53 views
4

我正在做一個WPF登錄界面。在我的登錄面板中,我有一個登錄名TextBox和一個PasswordBox。正如下面的第一張圖片所示,登錄文本框中有一個小人物徽標,密碼框中有一個鎖。我將圖像設置爲文本框背景,然後當我嘗試在登錄框中插入一些單詞時,單詞將覆蓋人類徽標(圖像B)。任何建議,使其正確嗎?帶圖像的WPF文本框

我的XAML:

<TextBox Width="380" Height="25" HorizontalAlignment="Center" Foreground="WhiteSmoke" BorderBrush="Transparent" > 
    <TextBox.Background> 
     <ImageBrush ImageSource="/icon/user_login.png" AlignmentX="Left" Stretch="None"></ImageBrush> 
    </TextBox.Background> 
</TextBox> 

圖像A:

enter image description here

圖片B:

enter image description here

回答

11

我的建議是,你用替換每個Textbox'sDockPanel。其中它們各自具有作爲最左邊項目的Image和作爲最右邊項目的Textbox。然後分別將圖像設置爲用戶和鎖定。然後將TextboxImages的背景設置爲透明。然後,您可以在DockPanel上設置所需的任何樣式。

編輯1 - 從工作示例複製粘貼

代碼:

<DockPanel> 
    <Button BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="23"> 
     <DynamicResource ResourceKey="SearchBar"/> 
    </Button> 'This is a button, because I have a custom Style which I am using which makes all the borders go away. And also because I use it to clear the field. 
    <TextBox Text="Search..." FontSize="16" HorizontalAlignment="Stretch" Background="Transparent"/> 
</DockPanel> 

圖片:

enter image description here

通過不設置第二項DockPanel.Dock財產,我告訴它橫跨DockPanel的其餘部分。任何其他疑問,請讓我知道。如果你複製粘貼上面,它可能看起來不一樣,因爲我剪掉了不相關的部分。

+0

謝謝你!真的幫助! +1 C = – 0070

0
<DockPanel Grid.Row="1" Margin="65,24,71,11" HorizontalAlignment="Stretch"> 
          <Image Source="/SDPI;component/Image/Profile.png"/> 
          <toolkit:WatermarkTextBox Grid.Row="1" FontSize="16"> 
           <toolkit:WatermarkTextBox.Watermark> 
            <StackPanel Orientation="Horizontal"> 
             <TextBlock Text="Username" FontSize="15" Margin="4,0,0,0" /> 
            </StackPanel> 
           </toolkit:WatermarkTextBox.Watermark> 
          </toolkit:WatermarkTextBox> 
         </DockPanel> 
+0

WatermarkTextBox來自擴展WPF Toolkit™社區版:https://wpftoolkit.codeplex.com/wikipage?title=WatermarkTextBox&referringTitle=Home – Maxence