TOC

This article is currently in the process of being translated into Persian (~99% done).

کنترل های پایه:

The PasswordBox control

ما در WPF برای ویرایش متن های معمولی تکست باکس ها (TextBox) را در اختیار داریم، اما برای ویرایش پسوورد ها چطور؟ البته عملکرد این دو بسیار مشابه است، ولی ما می خواهیم WPF بجای کاراکتر های اصلی، چیزی متفاوت را در زمان تایپ کردن پسوورد به کاربر نشان دهد تا آن ها را از دید افراد احتمالی دیگری که هم زمان به صفحه مانیتور نگاه می کنند، محافضت کند. برای این منظور WPF کنترلی به نام PasswordBox را در اختیار ما قرار می دهد که استفاده از آن به همان آسانی استفاده از تکست باکس خواهد بود. اجازه بدهید یک مثال به شما نشان دهم:

<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PasswordBoxSample" Height="160" Width="300">
    <StackPanel Margin="10">
        <Label>Text:</Label>
        <TextBox />
        <Label>Password:</Label>
        <PasswordBox />
    </StackPanel>
</Window>

من در تصویر، دو متن کاملا یکسان را در هر دو تکست باکس وارد کرده ام ولی در ورژن پسوورد، تمام کاراکتر ها با نقطه جایگزین شده اند. با استفاده از پراپرتی PasswordChar شما در حقیقت می توانید انتخاب کنید که چه کاراکتری بجای کاراکتر های اولیه نشان داده شوند:

<PasswordBox PasswordChar="X" />

در این مورد، کاراکتر X بجای نقطه استفاده خواهد شد. در مورادیکه شما می خواهید طول پسوورد را تعیین کنید، می توانید از پراپرتی MaxLength استفاده کنید:

<PasswordBox MaxLength="6" />

در مثال بعدی من از هر دو پراپرتی گفته شده استفاده کرده ام:

<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PasswordBoxSample" Height="160" Width="300">
    <StackPanel Margin="10">
        <Label>Text:</Label>
        <TextBox />
        <Label>Password:</Label>
        <PasswordBox MaxLength="6" PasswordChar="X" />
    </StackPanel>
</Window>

توجه کنید که چگونه کاراکتر ها اکنون بصورت X در آمده اند و همچنین امکان وارد کردن حد اکثر 6 کاراکتر در باکس وجود دارد.

بایندینگ در PasswordBox ها

وقتی که می خواهید پسوورد را از PasswordBox دریافت کنید، می توانید از پراپرتی Password در کد برنامه استفاده کنید. البته به علت مسایل امنیتی، این پراپرتی بصورت یک پراپرتی وابسته(dependency property) ایمپلیمنت نخواهد شد یعنی شما نخواهید توانست چیزی را به آن بایند(bind) کنید.

البته این می تواند برای شما اهمیت داشته باشد یا نداشته باشد - همانطور که گفتم بهرحال شما می توانید پسوورد را از کد برنامه بخوانید. ولی برای مواردی که می خواهید MVVM را پیاده سازی کنید یا چنانچه به دیتا بایندینگ علاقمند هستید، یک راه حل برای شما وجود خواهد داشت که شما می توانید از طریق این لینک، بیشتر درباره آن بخوانید: http://blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!