You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WPF Material Design:如何将设置文本绑定到HintAssist.Hint属性?

在WPF Material Design中绑定设置文本作为PasswordBox的提示语

嗨,我来帮你搞定这个问题!要把Material Design PasswordBox的提示语绑定到你的设置文本,其实很简单,分两种常见场景来操作:

场景1:使用WPF内置的应用程序设置(Properties.Settings)

如果你的提示语存在Visual Studio自带的Settings.settings文件里,按下面步骤来:

  1. 先确认你已经在Settings.settings里定义好了对应的字符串设置项,比如命名为PremiumPasswordHint
  2. 在XAML的根节点(比如Window/UserControl)添加properties命名空间,替换成你自己的项目名称:
xmlns:properties="clr-namespace:YourProjectName.Properties"
  1. 修改PasswordBox的HintAssist.Hint属性,用静态绑定指向你的设置项:
<PasswordBox 
    Visibility="Visible" 
    Name="premiumPasswordEs" 
    Margin="20 0 0 0" 
    Width="200" 
    materialDesign:HintAssist.Hint="{Binding Source={x:Static properties:Settings.Default}, Path=PremiumPasswordHint}"
    Style="{DynamicResource MaterialDesignFloatingHintPasswordBox}" 
    VerticalAlignment="Center"/>

这样运行时,提示语就会自动读取Settings里的对应值啦。如果之后设置值有变更,记得调用Settings.Default.Save()保存,重启应用就能生效。

场景2:使用MVVM架构中的ViewModel属性

如果你的项目用了MVVM模式,提示语存在ViewModel里的话:

  1. 确保你的ViewModel里有一个实现了INotifyPropertyChanged的属性,比如:
private string _premiumPasswordHint;
public string PremiumPasswordHint
{
    get => _premiumPasswordHint;
    set
    {
        _premiumPasswordHint = value;
        OnPropertyChanged(); // 这里要实现INotifyPropertyChanged的通知方法
    }
}
  1. 把PasswordBox的DataContext设置为你的ViewModel(可以通过Window/UserControl的DataContext绑定,或者直接在XAML里指定)。
  2. 直接绑定Hint属性到ViewModel的对应属性:
<PasswordBox 
    Visibility="Visible" 
    Name="premiumPasswordEs" 
    Margin="20 0 0 0" 
    Width="200" 
    materialDesign:HintAssist.Hint="{Binding PremiumPasswordHint}"
    Style="{DynamicResource MaterialDesignFloatingHintPasswordBox}" 
    VerticalAlignment="Center"/>

这种方式的好处是,当ViewModel里的PremiumPasswordHint值动态改变时,提示语会自动更新,不需要重启应用。

内容的提问来源于stack exchange,提问作者MrEmii

火山引擎 最新活动