我正在從MVVM方式開發WPF項目。如何綁定到Infragistics WPF TabItemEx的關閉事件?
我將Observable Collection綁定到XamTabControl。如果我向Observable Collection添加一個新項目,則會生成一個新選項卡。但是,如果我關閉該選項卡,該選項卡項目不會從Observable集合中刪除。
我可以手動執行此操作,如果我可以觸發標籤的關閉事件(或關閉事件)。但是這兩件事並沒有被解僱。但是有些事件被觸發,如MouseUp。
<igWindows:XamTabControl
Height="198"
HorizontalAlignment="Left"
Margin="0,54,0,0"
ItemsSource="{Binding Tabs}"
SelectedItem="{Binding SelectedTab}"
Name="xamTabControl1"
VerticalAlignment="Top"
Width="651">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding TabCloseCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<igWindows:XamTabControl.ItemContainerStyle>
<Style TargetType="igWindows:TabItemEx">
<Setter Property="Header" Value="{Binding Header}"/>
<Setter Property="CloseButtonVisibility" Value="{Binding CloseButtonVisibility}"/>
</Style>
</igWindows:XamTabControl.ItemContainerStyle>
<igWindows:XamTabControl.ContentTemplate>
<!-- this is the body of the TabItem template-->
<DataTemplate>
<TextBlock Text="{Binding Content}" />
</DataTemplate>
</igWindows:XamTabControl.ContentTemplate>
</igWindows:XamTabControl>
這是我的視圖模型
private ObservableCollection<TabItem> tabs;
private TabItem selectedTab;
private ICommand tabCloseCommand;
public ObservableCollection<TabItem> Tabs
{
get
{
return tabs;
}
set
{
tabs = value;
NotifyPropertyChanged("Tabs");
}
}
public TabItem SelectedTab
{
get
{
return selectedTab;
}
set
{
selectedTab = value;
NotifyPropertyChanged("SelectedTab");
}
}
public ICommand TabCloseCommand
{
get
{
if (tabCloseCommand == null)
{
tabCloseCommand = new RelayCommand(param => this.CloseTab(), null);
}
return tabCloseCommand;
}
}
private void CloseTab()
{
}
是的。我已經將命令綁定到tabcontrol而不是tabitem。所以我已經更新了代碼,但沒有奏效。 ' I:EventTrigger> I :Interaction.Triggers>' – Haritha 2013-02-28 06:08:28
我已經測試過,在回答之前,它沒有工作,但如果我添加事件的方式,我顯示在我的答案它的工作原理。我不確定使用EventTrigger執行此操作的正確方法是什麼,或者當EventTrigger連接到XamTabControl時可以在TabItemEx上監聽事件。 – alhalama 2013-02-28 13:49:10