簡體   English   中英

選擇 TabItem 時如何更新綁定? WPF

[英]How to update bindings when TabItem is selected? WPF

我有以下代碼

<mah:MetroWindow x:Class="NeoTec.SprayMachine.WPF.MainWindow"
        namespaces bla bla>

    <Window.Resources>
        <DataTemplate DataType="{x:Type viewModels:CompanyDatabaseViewViewModel}">
            <controls:CompanyDatabaseViewControl/>
        </DataTemplate>

        <DataTemplate DataType="{x:Type viewModels:UserDatabaseViewViewModel}">
            <controls:UserDatabaseViewControl/>
        </DataTemplate>
        
        <DataTemplate DataType="{x:Type viewModels:ParametersViewModel}">
            <controls:ParamatersControl/>
        </DataTemplate>

        <DataTemplate DataType="{x:Type viewModels:SettingsViewModel}">
            <controls:SettingsControl/>
        </DataTemplate>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <controls:UpperPanelControl HorizontalAlignment="Center"/>
        <ContentControl Grid.Row="1" Content="{Binding ShownViewModel}"/>
    </Grid>
</mah:MetroWindow>

其中UpperPanelControl是一個帶有按鈕的控件,可更改MainViewModel中的ShownViewModel 出於設計目的,我決定將其全部更改為TabControl (客戶要求有按鈕):

<mah:MetroWindow x:Class="NeoTec.SprayMachine.WPF.MainWindow"
        namespaces bla bla>
    <TabControl>
        <TabItem Header="Company Database">
            <controls:CompanyDatabaseViewControl DataContext="{Binding CompanyDatabaseViewModel}"/>
        </TabItem>
        <TabItem Header="User Database">
            <controls:UserDatabaseViewControl DataContext="{Binding UserDatabaseViewModel}"/>
        </TabItem>
        <TabItem Header="Parameters" IsSelected="{Binding ParametersTabSelected}">
            <controls:ParamatersControl DataContext="{Binding ParametersViewModel}"/>
        </TabItem>
        <TabItem Header="Settings">
            <controls:SettingsControl DataContext="{Binding SettingsViewModel}"/>
        </TabItem>
        <TabItem Header="Info">
            <controls:InfoControl/>
        </TabItem>
    </TabControl>
</mah:MetroWindow>

它看起來更好,但問題是當我切換選項卡時,選項卡中的數據沒有更新。 更改選項卡時,是否有機會將此與更新綁定的TabControl一起使用?

每個TabItem都有一個IsSelected屬性。 您可以在您的視圖 Model 中綁定它並采取適當的操作。

<TabItem Header="Company Database" IsSelected="{Binding CompanyDataBaseTabIsSelected}">
    <controls:CompanyDatabaseViewControl DataContext="{Binding CompanyDatabaseViewModel}"/>
</TabItem>

private bool _companyDatabaseTabIsSelected;
public bool CompanyDatabaseTabIsSelected
{
    get { return _companyDatabaseTabIsSelected; }
    set
    {
        _companyDatabaseTabIsSelected = value;
        _companyDatabaseViewModel.Refresh();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM