使用DependencyProperty在文本框(UWP)上显示占位符文本

问题描述 投票:0回答:1

我有一个仅包含文本框的自定义用户控件,我希望能够将占位符文本绑定到该文本框。我的UserControl代码是这样的

<UserControl
x:Class="Proj.Editors.EditTextControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MemberSuiteConsoleApp.Controls.Editors"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid>
    <TextBox x:Name="txtbox"  Width="300" PlaceholderText="{Binding ElementName=txtbox, Path=DataContext.PlaceholderText}"></TextBox>
</Grid>

public sealed partial class EditTextControl : UserControl
    {
        public EditTextControl()
        {
            this.InitializeComponent();
        }

        public string PlaceholderText
        {
            get { return (string)GetValue(PlaceholderTextProperty); }
            set { SetValue(PlaceholderTextProperty, value); }
        }

        // Using a DependencyProperty as the backing store for PlaceholderText.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PlaceholderTextProperty =
            DependencyProperty.Register("PlaceholderText", typeof(string), typeof(EditTextControl), new PropertyMetadata(""));

    }

并且我试图像在我的页面中一样在我的页面中使用此UserControl

 <Grid>
    <editors:EditTextControl PlaceholderText="My placeholder" Height="400"></editors:EditTextControl>
</Grid>

但是由于某些原因,占位符文本未显示在文本框中,我在这里缺少什么?

c# xaml uwp dependency-properties
1个回答
0
投票
您可以改用x:Bind。我尝试过并工作。

<TextBox x:Name="txtbox" Width="300" PlaceholderText="{x:Bind PlaceholderText, Mode=OneWay}"></TextBox>

© www.soinside.com 2019 - 2024. All rights reserved.