Мой стиль Watermarker блокирует информацию моего текстового поля - PullRequest
0 голосов
/ 08 марта 2019

Я не уверен, как еще описать это.

Проблема: я запускаю стиль для моего текстового поля WPF в app.xaml

<Grid>
   <TextBox Style="{StaticResource WatermarkTextbox}" x:Name="Email" Height="30" Width="300" FontSize="20" FontFamily="Comic Sans MS" Margin="0 40 0 0" />
</Grid>

Когда у меня есть стиль в моем TextBox, я не могу получить письменную информацию в свой SQL. Это мой стиль в App.xaml:

<local:BoolToVisibilityConverter x:Key="InputToVisibility"/>
<Style x:Key="WatermarkTextbox" TargetType="{x:Type TextBox}">
    <Setter Property="BorderBrush" Value="Black"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Template">
        <Setter.Value>
             <ControlTemplate TargetType="{x:Type TextBox}">
                  <Border Background="{TemplateBinding Background}"
                          BorderBrush="{TemplateBinding BorderBrush}"
                          BorderThickness="{TemplateBinding BorderThickness}">
                      <Grid>
                          <TextBlock Text="Email...">
                              <TextBlock.Visibility>
                                  <MultiBinding Converter="{StaticResource InputToVisibility}">
                                        <Binding ElementName="Email" Path="Text.IsEmpty"/>
                                        <Binding ElementName="Email" Path="IsFocused"/>
                                    </MultiBinding>
                                </TextBlock.Visibility>
                            </TextBlock>
                            <TextBox x:Name="Email" Background="Transparent"/>
                        </Grid>
                    </Border>
             </ControlTemplate>
         </Setter.Value>
    </Setter>
</Style>

Потребовалось некоторое время, чтобы найти эту проблему. И у меня совершенно нет идей на данный момент.

У меня есть один пароль для моего пароля, для экрана входа в систему. Но когда я запускаю код для поиска учетных данных, он ничего не возвращает мне. Если я уберу стиль, он решит все проблемы для меня. Кто-нибудь знает, как я могу сохранить Waterstyle и заставить его работать одновременно?

C # Кнопка входа в систему:

private void Button_Click(object sender, RoutedEventArgs e) // Login
    {
       SqlConnection sqlCon = new SqlConnection(@"Data Source=****;Initial Catalog=LoginDB;Integrated Security=True");

        try
        {
            if (sqlCon.State == System.Data.ConnectionState.Closed)
                sqlCon.Open();

            string query = "SELECT COUNT(1) FROM tblUser WHERE Username=@UserName AND Password=@Password";
            SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
            sqlCmd.CommandType = System.Data.CommandType.Text;

            sqlCmd.Parameters.AddWithValue("@UserName", Email.Text);
            sqlCmd.Parameters.AddWithValue("@Password", Pass.Text);
            int count = Convert.ToInt32(sqlCmd.ExecuteScalar());

            if (count == 1)
            {
                Main.Content = new Page1();
                Framep.Visibility = Visibility.Visible;
                GridS.Visibility = Visibility.Hidden;
            }
            else
            {
                MessageBox.Show("Username or password is incorrect");
            }

        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message, "App Information");
        }
        finally
        {
            sqlCon.Close();
        } 
    }
}

SQL:

go
USE [LoginDB]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tblUser](
    [UserID] [int] NULL,
    [UserName] [nvarchar](50) NULL,
    [Password] [nvarchar](50) NULL
) ON [PRIMARY]

GO

1 Ответ

0 голосов
/ 08 марта 2019

Вот!

Я немного изменил ваш стиль, чтобы дать вам представление о том, что делать.Я бы сказал, https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/textbox-styles-and-templates - это все еще способ сделать это правильно!

<Style x:Key="WatermarkTextbox" TargetType="{x:Type TextBox}">
                <Setter Property="BorderBrush" Value="Black"/>
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TextBox}">
                            <Border Background="{TemplateBinding Background}"
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}">
                                <Grid>
                                    <ScrollViewer x:Name="PART_ContentHost" />
                                    <TextBlock x:Name="TxBlkEmail" Text="Email..." Visibility="Collapsed">
                                    </TextBlock>
                                </Grid>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="Text" Value="{x:Null}">
                                    <Trigger.Setters>
                                        <Setter TargetName="TxBlkEmail" Property="Visibility" Value="Visible"/>
                                    </Trigger.Setters>
                                </Trigger>
                                <Trigger Property="Text" Value="">
                                    <Trigger.Setters>
                                        <Setter TargetName="TxBlkEmail" Property="Visibility" Value="Visible"/>
                                    </Trigger.Setters>
                                </Trigger>

                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...