Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将水印和自定义属性分配给文本框';s文本属性?(马哈普斯)_C#_Wpf_Watermark_Attached Properties_Mahapps.metro - Fatal编程技术网

C# 如何将水印和自定义属性分配给文本框';s文本属性?(马哈普斯)

C# 如何将水印和自定义属性分配给文本框';s文本属性?(马哈普斯),c#,wpf,watermark,attached-properties,mahapps.metro,C#,Wpf,Watermark,Attached Properties,Mahapps.metro,我在文本框中创建合适的水印时遇到问题 我在我的项目中使用MahApps,只要我不将“文本”绑定到我的自定义属性,所有这些都可以正常工作 但是我需要跟踪TextBox中的更改,因此我像这样绑定Text属性: <TextBox controls:TextboxHelper.Watermark="Enter text here..." Text="{Binding Path=MyProperty}" /> 在这种情况下,水印属性停止工作,水印文本在我开始键入时不会消失 如何帮助它?

我在文本框中创建合适的水印时遇到问题

我在我的项目中使用MahApps,只要我不将“文本”绑定到我的自定义属性,所有这些都可以正常工作

但是我需要跟踪TextBox中的更改,因此我像这样绑定Text属性:

<TextBox controls:TextboxHelper.Watermark="Enter text here..." Text="{Binding Path=MyProperty}" />

在这种情况下,水印属性停止工作,水印文本在我开始键入时不会消失

如何帮助它? 谢谢

更新这是由制作的示例窗口。 在下部未绑定文本框中,水印按预期工作。但是,当我尝试在第一个文本框中键入smth时,水印仍然存在。


更新2以防有人会犯同样的错误-似乎我在初始化窗口时确实在代码中设置了属性,这就是水印不起作用的原因。现在,多亏了har07,一切都好了。

正如我在评论中所说,设置水印和
文本绑定应该不会有任何问题。我使用两个文本框进行了简单的测试,一个绑定了
Text
属性,另一个未绑定。两者都显示相同的行为:水印文本被键入的文本替换,文本框失去焦点时变暗

//查看
//模型(我正在使用MvvmLight实现INPC)
公共类人物:ObservieObject
{
私有字符串_name=“默认名称”;
公共字符串名
{
获取{return\u name;}
设置
{
_名称=值;
RaisePropertyChanged(()=>名称);
}
}
}

设置水印和
文本
绑定应该不会有任何问题。对我来说效果很好,文本框上的水印文本变暗focus@har07谢谢你的回复!你能发布你的代码示例吗?奇怪的是,它对我不起作用,可能是一些bug..发布了示例代码,带有下载示例项目(VS 2012)的链接@har07非常感谢您花时间上传该项目!然而,这与我的预期不符。我制作了一个打印屏幕并添加到我的问题中,从中可以看出,我无法在绑定的文本框中键入文本,水印不会消失。好的,“默认名称”文本是来自
text
属性,而不是水印。删除绑定文本框中的所有文本,然后您将看到水印>将焦点移动到未绑定文本框,然后绑定文本框中的水印将变暗。这不是预期的行为吗?非常感谢您花时间上传项目!然而,这与我的预期不符。我制作了一个打印屏幕并添加到我的问题中,从中可以看出,我无法在绑定的文本框中键入文本,水印不会消失。
//View
<Controls:MetroWindow x:Class="WpfMahApps.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
        xmlns:local="clr-namespace:WpfMahApps"
        Title="StackOverflow" Height="500" Width="625"
        WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.DataContext>
            <local:Person/>
        </Grid.DataContext>
        <StackPanel>
            <TextBox Text="{Binding Name}" Controls:TextboxHelper.Watermark="Enter text here...."/>
            <TextBox Controls:TextboxHelper.Watermark="Enter text here too...."/>
        </StackPanel>
    </Grid>
</Controls:MetroWindow>

//Model (I'm using MvvmLight for implementation of INPC)
public class Person : ObservableObject
{
    private string _name = "Default Name";
    public String Name
    {
        get { return _name; }
        set
        {
            _name = value;
            RaisePropertyChanged(() => Name);
        }
    }
}