2

WatermarkPasswordBox コントロールが必要ですが、Winrt にはありません。たぶん、PasswordBox に Watermark プロパティを追加できます。できる人はいますか?

ありがとう

4

3 に答える 3

2

Windows 8.0 では、ここWatermarkPasswordBoxから入手できる WinRT XAML Toolkit を使用できます。任意の UI 要素 ( 、 など) を透かしまたはテキストを受け取り、テキストのスタイルを設定する を受け取るプロパティとして設定するプロパティを提供します。WatermarkShapeImageWatermarkTextWatermarkTextStyleTextBlock Style

Windows 8.1 では、同じプロパティまたは新しいプロパティを使用できPlaceholderTextます。

コントロールのコードをライブラリから自由に取り出して変更WatermarkPasswordBoxし、アプリで使用してください。MITライセンスです。クレジットは必要ありません。次のように、.cs ファイルと .xaml ファイルを取得し、.xaml リソース ディクショナリを Themes/Generic.xaml に含めます。

<ResourceDictionary
        Source="ms-appx:///YourControlsLibraryNamefNotInMainApp/RelativeDirectoryPathOfTheFile/WatermarkPasswordBox.xaml" />
于 2013-07-11T02:10:58.193 に答える
1

更新 1

サード パーティの DLL を使用したくない場合は、これら 2 つのメソッドをPasswordBoxBehavior.csファイルに追加します。

using System.Reflection;

public static T FindVisualChildByName<T>(this DependencyObject fe, string name) where T : DependencyObject
{
    if (string.IsNullOrEmpty(name))
    {
        throw new ArgumentNullException("name");
    }
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(fe); i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(fe, i);
        string a = child.GetValue(FrameworkElement.NameProperty) as string;
        if (a == name)
        {
            return child as T;
        }
        T t = FindVisualChildByName<T>(child, name);
        if (t != null)
        {
            return t;
        }
    }
    return default(T);
}

public static T FindVisualParent<T>(this DependencyObject fe) where T : DependencyObject
{
    for (fe = VisualTreeHelper.GetParent(fe); fe != null; fe = VisualTreeHelper.GetParent(fe))
    {
        T t = fe as T;
        if (t != null)
        {
            return t;
        }
    }
    return default(T);
}

JulMar からの詳細なブログはこちら

Windows ストア アプリの PasswordBox に透かしを追加する

自分で使いたい場合のコードは次のとおりです。

于 2013-07-10T13:10:04.770 に答える