C# wpf更改键绑定手势上文本框的文本
如何使用MVVM模式解决这个问题,我正在使用Devexpress MVVM。我有许多文本框的形式 当用户按下Ctrl+B并且文本框的当前文本为空或为空时,我需要将文本框文本设置为[空白] 但如果可能的话,我正在寻找使用IValueConverter的方法 我有一个类似的班级C# wpf更改键绑定手势上文本框的文本,c#,wpf,key-bindings,ivalueconverter,C#,Wpf,Key Bindings,Ivalueconverter,如何使用MVVM模式解决这个问题,我正在使用Devexpress MVVM。我有许多文本框的形式 当用户按下Ctrl+B并且文本框的当前文本为空或为空时,我需要将文本框文本设置为[空白] 但如果可能的话,我正在寻找使用IValueConverter的方法 我有一个类似的班级 public class BlankText : IValueConverter { public object Convert(object value, Type targetType, obje
public class BlankText : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (string.IsNullOrEmpty(value.ToString()))
return "[blank]";
else
return value;
}
}
我在参考资料中有这个代码
<UserControl.Resources>
<c:BlankText x:Key="BlankText"/>
</UserControl.Resources>
这是我的文本框
<TextBox Text="{Binding District}" >
<TextBox.InputBindings>
<KeyBinding Gesture="Ctrl+B">
</KeyBinding>
</TextBox.InputBindings>
</TextBox>
但我的问题是我怎么能在键盘上调用它?我做得对吗?为了使用键绑定执行操作,您不能使用IValueConverter。IValueConverters用于转换值,而不是执行操作。您需要定义一个实现ICommand的类,然后将该类的实例分配给KeyBinding.Command 然后创建此类的实例并将其附加到ViewModel,以便KeyBinding可以访问它:
<TextBox Text="{Binding District}">
<TextBox.InputBindings>
<KeyBinding Gesture="Ctrl+B" Command="{Binding MyBlankCommand}" CommandParameter="District"/>
</TextBox.InputBindings>
</TextBox>
然而,当用户按下键盘快捷键时,将文本改为[空白]是一种奇怪的用户体验模式。我建议改为在文本框中添加一个占位符。我已经想到了这个解决方案,但是有了这个。我需要对每个人都有一个命令textbox@mecocopy您可以为每个文本框使用单个命令实例;是什么阻止了你?那就听我指挥。我如何知道哪个绑定被传递到它?为了知道我将设置为[空白]的属性?每个文本框文本都绑定到一个属性I修改了我的帖子以使用反射,这允许这种模式工作。但是,在实例化ViewModel时,现在需要将其实例传递给命令。
<TextBox Text="{Binding District}">
<TextBox.InputBindings>
<KeyBinding Gesture="Ctrl+B" Command="{Binding MyBlankCommand}" CommandParameter="District"/>
</TextBox.InputBindings>
</TextBox>