我在試圖總結我的周圍棱鏡和Unity如何WPF中工作頭上的過程,但目前已經由簡單的任務包版廣告時,如何重置/刷新綁定視圖模型。可能我對它的工作原理有誤解。WPF利用棱鏡/統一
怎樣才能刷新綁定視圖模型?
我有使用棱鏡RegionManager WPF應用程序加載了一個用戶控件:
<ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion" x:Name="mainContent" HorizontalAlignment="Center" Margin="0,25,0,0"/>
在我的用戶控件我有一個字段的用戶與一個提交按鈕和清除按鈕(簡稱用戶填寫控制內容)
<TextBox Margin="10,3,15,0" Text="{Binding LastName, UpdateSourceTrigger=PropertyChanged}" MinWidth="150" materialDesign:HintAssist.Hint="*Last Name" Style="{StaticResource MaterialDesignFloatingHintTextBox}" FontSize="16"/>
<Button Command="{Binding ClearCommand}" Style="{StaticResource MaterialDesignRaisedAccentButton}" Margin="0 12 8 0" Width="155" ToolTip="Discard information entered and reset form" Background="#FF990B0B" Foreground="#FFECE9E9" BorderBrush="DarkRed">Cancel and Discard</Button>
我場的結合的偉大工程,我也綁不住我的按鈕,一個命令,將調用,我會想重置形式的方法:
public class CheckInViewModel : BindableBase
{
private IEventAggregator _eventAggregator;
private string _lastName;
public string LastName
{
get { return _lastName; }
set { SetProperty(ref _lastName, value); }
}
public DelegateCommand ClearCommand { get; set; }
private void ExecuteClear()
{
//reset form here
}
public CheckInViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
ClearCommand = new DelegateCommand(ExecuteClear);
}
}
我知道,我很可能只是手動復位所有字段在ExecuteClear方法但這似乎有點笨重且容易出錯在現實中我有40+場處理。
我試着將我的綁定字段移動到一個完全獨立的模型,然後使該模型成爲我的視圖模型的一個屬性,以便我可以在clear方法中重新實例化它,但似乎並沒有在更新視圖時進行更新。我想我必須錯過一個方法調用來解除綁定我的最後一個模型,並重新綁定到新的,但我不知道如何去做,也找不到任何文檔。
嘗試失敗例子:
public class CheckInViewModel : BindableBase
{
private IEventAggregator _eventAggregator;
public CheckInModel checkInModel { get; set; }
public DelegateCommand ClearCommand { get; set; }
private void ExecuteClear()
{
checkInModel = new CheckInModel();
}
public CheckInViewModel(IEventAggregator eventAggregator)
{
checkInModel = new CheckInModel();
_eventAggregator = eventAggregator;
ClearCommand = new DelegateCommand(ExecuteClear);
}
}
public class CheckInModel : BindableBase
{
private string _lastName
public string LastName
{
get { return _lastName; }
set { SetProperty(ref _lastName, value); }
}
}
<TextBox Margin="10,3,15,0" Text="{Binding checkInModel.LastName, UpdateSourceTrigger=PropertyChanged}" MinWidth="150" materialDesign:HintAssist.Hint="*Last Name" Style="{StaticResource MaterialDesignFloatingHintTextBox}" FontSize="16"/>
<Button Command="{Binding ClearCommand}" Style="{StaticResource MaterialDesignRaisedAccentButton}" Margin="0 12 8 0" Width="155" ToolTip="Discard information entered and reset form" Background="#FF990B0B" Foreground="#FFECE9E9" BorderBrush="DarkRed">Cancel and Discard</Button>
就是這樣,不敢相信我忽略了這一點。感謝您接收它。 –