/// <summary>
        /// Simple method to add a new TextBlock into the visual tree of the PasswordBox which will present the watermark.
        /// </summary>
        /// <param name="pbox">The target PasswordBox.</param>
        /// <param name="text">The watermark text.</param>
        private static void AddWatermarkElement(PasswordBox pbox, string text)
        {
            var watermarkTextBlock = pbox.FindVisualChildByName <TextBlock>(pbox.Name + pbox.Name + WatermarkId);

            if (watermarkTextBlock == null)
            {
                var fe = pbox.FindVisualChildByName <ScrollViewer>("ContentElement");
                if (fe != null)
                {
                    var panelOwner = fe.FindVisualParent <Panel>();
                    if (panelOwner != null)
                    {
                        // Add the TextBlock
                        var textBlock = new TextBlock
                        {
                            Name                = pbox.Name + WatermarkId,
                            Text                = text,
                            TextAlignment       = TextAlignment.Center,
                            HorizontalAlignment = HorizontalAlignment.Center,
                            VerticalAlignment   = VerticalAlignment.Center,
                            Margin              = new Thickness(3, 0, 0, 0),
                            Foreground          = new SolidColorBrush(Colors.Gray)
                        };
                        int index = panelOwner.Children.IndexOf(fe);
                        panelOwner.Children.Insert(index + 1, textBlock);
                    }
                }
            }
        }
        /// <summary>
        /// Simple method to remove the TextBlock from the PasswordBox visual tree.
        /// </summary>
        /// <param name="pbox">The target PasswordBox.</param>
        private static void RemoveWatermarkElement(PasswordBox pbox)
        {
            var watermarkTextBlock = pbox.FindVisualChildByName <TextBlock>(pbox.Name + WatermarkId);

            if (watermarkTextBlock != null)
            {
                var panelOwner = watermarkTextBlock.FindVisualParent <Panel>();
                if (panelOwner != null)
                {
                    panelOwner.Children.Remove(watermarkTextBlock);
                }
            }
        }
示例#3
0
        /// <summary>
        ///     Simple method to remove the TextBlock from the PasswordBox
        ///     visual tree.
        /// </summary>
        /// <param name="pbox"></param>
        private static void RemoveWatermarkElement(PasswordBox pbox)
        {
            string temp = "ds";

            var wmTb = pbox.FindVisualChildByName <TextBlock>(WatermarkId);

            if (wmTb != null)
            {
                var panelOwner = wmTb.FindVisualParent <Panel>();
                if (panelOwner != null)
                {
                    panelOwner.Children.Remove(wmTb);
                }
            }
        }