繁体   English   中英

WPF Tab控件数据绑定

[英]Wpf Tab control DataBinding

我正在使用wpf选项卡控件,我需要检测选项卡更改,并且还能够以编程方式更改选项卡,我想在两种情况下都做不同的事情..我该怎么做?

<TabControl ItemsSource="{Binding Path=ResultsCollection}" SelectedItem="{Binding SelectedItem}">
</TabControl>

我的视图模型中的属性

public ResultObject SelectedItem
    {
        get { return _selectedItem; }
        set
        {
            if (SelectedItem != null && SelectedItem.Equals(value)) 
                return;

            _selectedItem = value;
            OnPropertyChanged(() => SelectedItem);
        }
    }

尝试绑定到SelectedIndex ;

SelectedIndex="{Binding SelectedIndex}"

XAML:

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="56,272,0,0" Click="Button_Click"/>
    <TabControl HorizontalAlignment="Left" Height="231" VerticalAlignment="Top" Width="507" SelectedIndex="{Binding MyTabIndex, Mode=TwoWay}">
        <TabItem Header="TabItem">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
        <TabItem Header="TabItem">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
    </TabControl>

</Grid>
</Window>

VB:

Imports System.ComponentModel

Class MainWindow : Implements INotifyPropertyChanged

Private _MyTabIndex As Integer

Public Property MyTabIndex As Integer
    Get
        Return _MyTabIndex
    End Get
    Set(value As Integer)

        If value <> _MyTabIndex Then

            _MyTabIndex = value

            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("MyTabIndex"))

        End If

    End Set
End Property


Private Sub Button_Click(sender As Object, e As RoutedEventArgs)

    MyTabIndex += 1


End Sub

Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged

Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

    Me.DataContext = Me


End Sub
End Class

您已经正确绑定到SelectedItem。 由于您的模型中已经提供了该功能,因此当您需要更改所选项目时,为什么不在那里更改所选项目。 即:

SelectedItem = MyNewTabToSwitchTo;

可能还需要将绑定模式设置为双向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM