更新ボタンで、私は呼び出します_eventAggregator.GetEvent<RefreshEvent>().Publish();
そして、タブ内のすべての領域のコードがこのイベントを購読していました。
問題: 問題は、現在アクティブなタブのみを更新したいということです。しかし、私の場合、すべてのタブが更新されています。これを解決するための良い方法はありますか?
編集1
私は私の見解で実装IActiveAware
します:
public partial class ShipsControlView : UserControl, IActiveAware
{
public ShipsControlView()
{
InitializeComponent();
}
private bool isActive;
public bool IsActive
{
get
{
return this.isActive;
}
set
{
if (this.isActive == value)
return;
this.isActive = value;
var viewModelActiveAware = this.DataContext as IActiveAware;
if (viewModelActiveAware != null)
viewModelActiveAware.IsActive = value;
this.OnIsActiveChanged();
}
}
public event EventHandler IsActiveChanged;
protected virtual void OnIsActiveChanged()
{
var handler = this.IsActiveChanged;
if (handler != null)
handler(this, EventArgs.Empty);
}
}
このビューを tabControl に追加しました:
<TabControl
prism:RegionManager.RegionName="TabRegion2"
ItemContainerStyle="{StaticResource HeaderStyle}"
></TabControl>
.
regionManager.RegisterViewWithRegion("TabRegion2", typeof(ShipsControlView));
のステータスを確認しIsActive
ます。タブをクリックすると常に変更されます(正常に動作します)。
問題: タブがアクティブでない場合、そのタブのコマンドはグローバル コンポジット ボタンでトリガーされますが、そうしてはなりません。