我有一个包含多个文本框输入的窗口。当我单击编辑时,它会在当前用户中加载,如果我进行更改,则决定取消它并不取消取消时的更改。
如果我再次尝试编辑同一个人,我之前所做的更改仍然在输入字段中。
这就是我调用编辑窗口的方式
<Button x:Uid="Button_EditCommand" Margin="0,0,2,0" Command="{Binding Path=EditProviderCommand}" Style="{StaticResource btnCustom}" MinWidth="75" Content="Save" Visibility="{Binding Path=IsEditing, Converter={StaticResource VisibilityConverter}}" />
然后调用该框,这是我的取消方法
CancelCommand = new RelayCommand(Cancel);
public ICommand CancelCommand { get; private set; }
private void Cancel()
{
Provider = null;
OnRequestClose();
}
取消方法与Add方法共享。当我输入添加并单击取消时,它会清除所有更改。如何清除已编辑的字段而不是将它们绑定到绑定?
文本框:
<TextBox x:Uid="TextBox_1" Grid.Column="1" Grid.Row="0" Tag="{Binding Path=FirstNameLabel, Source={StaticResource Clientization}}" Style="{StaticResource EditTextBox}" MaxLength="35"
Text="{Binding Path=Provider.FirstName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Uid="TextBox_2" Grid.Column="2" Grid.Row="0" Tag="Middle" MinWidth="75" Style="{StaticResource EditTextBox}" MaxLength="30"
Text="{Binding Path=Provider.MiddleName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Uid="TextBox_3" Grid.Column="1" Grid.Row="1" Tag="{Binding Path=LastNameLabel, Source={StaticResource Clientization}}" Style="{StaticResource EditTextBox}" MaxLength="60"
Text="{Binding Path=Provider.LastName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Uid="TextBox_4" Grid.Column="2" Grid.Row="1" Tag="Suffix" Style="{StaticResource EditTextBox}" MaxLength="20"
Text="{Binding Path=Provider.Suffix, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Uid="TextBox_5" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Tag="List Name*" Style="{StaticResource EditTextBox}" MaxLength="160"
Text="{Binding Path=Provider.ListName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Uid="TextBox_6" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="3" Tag="NPI*" Style="{StaticResource EditTextBox}" MaxLength="80"
Visibility="{Binding Path=HideNpi, Source={StaticResource Clientization}, Converter={StaticResource TernaryConverter}, ConverterParameter='True ? Collapsed : Visible'}"
Text="{Binding Path=Provider.NPI, UpdateSourceTrigger=PropertyChanged}"/>
更新
我的提供商副本
public AddEditProviderDialogViewModel(IProviderRepository providerRepository, IMedListProvider medListProvider,
Provider provider, bool isEditing)
: this(providerRepository, medListProvider, provider)
{
_isEditing = isEditing;
Provider editProvider = new Provider()
{
FirstName = provider.FirstName,
LastName = provider.LastName,
Prefix = provider.Prefix,
Suffix = provider.Suffix,
ListName = provider.ListName,
NPI = provider.NPI,
OrgName = provider.OrgName,
Address1 = provider.Address1,
Address2 = provider.Address2,
City = provider.City,
State = provider.State,
Zip = provider.Zip,
EmailAddress = provider.EmailAddress,
Phone1Type = provider.Phone1Type,
Phone2Type = provider.Phone2Type,
Phone1 = provider.Phone1,
Phone2 = provider.Phone2
};
答案 0 :(得分:1)
大概有Add
,你只对编辑过的模型做任何事情,下次你创建一个新模型。我无法看到任何事情会被清除 - 只是没有添加。
Cancel
无法撤消任何更改,您必须自己处理。也许复制当前项目并编辑它。接受后,您必须将更改复制回原始版本。
如果您需要任何特定帮助,我们需要查看更多代码。也许是一个简单的例子。
答案 1 :(得分:0)
我这样做的方法是:创建一个对象的副本。然后创建一个撤消方法并将其绑定到取消。 undo方法可以这样做:editedobject = originalobject。我回家时发布了错误的邮政编码。