目的是在文本框中输入的内容,相同的内容将显示在TextBlock
.
交互触发将是PreviewTextInput
文本框的完成事件。
但它给出了错误但没有按预期工作。
已附加运行时图像的绑定错误。
下面是代码。
XAML
<Window x:Class="MVVMApp.TextBindings"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MVVMApp"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d"
Title="Text Bindings" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="Enter Text Value" Grid.Row="0" Grid.Column="0"/>
<TextBox Name="txtBox1" Text="{Binding BxVal,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Grid.Row="0" Grid.Column="1" Width="150" Height="30">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewTextInput">
<i:InvokeCommandAction Command="{Binding cmdType}" CommandParameter="{Binding BxVal,ElementName=txtBox1}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
<TextBlock Text="Result --> " Grid.Row="1" Grid.Column="0"/>
<TextBlock Text="{Binding Result,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Background="Lavender" Grid.Row="1" Grid.Column="1"/>
</Grid>
MVVM
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MVVMApp.Helper;
namespace MVVMApp.ViewModel
{
class TextBindingsVM :ViewModelBase
{
DelegateCommand <object> cmdType { get; set; }
private string _Result { get; set; }
public string Result
{
get { return _Result; }
set
{
_Result = value;
OnPropertyChanged(this, "Result");
}
}
private string _BxVal { get; set; }
public string BxVal
{
get { return _BxVal; }
set
{
_BxVal = value;
OnPropertyChanged(this, "BxVal");
Result = BxVal;
}
}
public TextBindingsVM()
{
cmdType = new DelegateCommand<object>(cmdType_Execute);
}
private void cmdType_Execute(object obj)
{
throw new NotImplementedException();
}
}
}