5

ほとんどのリソースを見てきましたが、良い解決策を見つけることができます。ハードコーディングされたタブコントロールがあります。

<TabControl TabStripPlacement="Left" Padding="0" Style="{DynamicResource SettingsTab}" ItemContainerStyle="{DynamicResource SettingsTabItemStyle}" Background="WhiteSmoke" >
                <TabItem Header="ΓΕΝΙΚΑ" Margin="0" IsEnabled="False" > <Grid /></TabItem>                              
                <TabItem Header="Προσωπικό" Margin="0" IsSelected="True">
                    <Grid MinHeight="400">                     

                        <ContentControl HorizontalAlignment="Stretch" Margin="50,67,50,0"  Name="ActiveItem" />
                    </Grid>
                </TabItem>
                <TabItem Header="Τραπέζια" Margin="0">
                    <Grid />
                </TabItem>

更新 - 問題の再掲
ここに私のカスタマイズされたタブ コントロールがあります。灰色のテキストは、グループのように機能する無効なタブ項目です。一般設定、システム設定などのように、ナビゲーションメニューとしての役割があります。現在、各タブ項目 (無効になっているものではない) にコンテンツ コントロールがあり、必要なビュー モデルをバインドしています。
しかし、私は CM で Conductor.Collection.OneActive を使用できません。
なんで?
CMサンプルやその他のサンプルからhelloscreensの例を見てきましたが、ここでの問題は、バインディングを介してこれを行うと、目的を果たさないダミーのビューモデルを作成する以外に無効なタブ項目を表示する方法がないことです。どうすれば達成できますかこれ ?

広告

4

1 に答える 1

4

更新:ソースはこちら

ハードコーディングされたタブコントロールがあります。

これは要件ですか?

しかし、私は CM で Conductor.Collection.OneActive を使用できません。なんで?

これが機能しない理由は、Items コレクションConductor.Collection.OneActiveにバインドする必要があるためだと思います。ItemsSourceバインドするItemsSource場合は、タブ項目も に記述できませんXAML

xaml でタブ項目を記述する必要のないソリューションを作成しました。

重要な部分:

タブ項目プロパティに記述されてShellViewいるビューモデルにバインドできます。TabControl ItemContainerStyleIsEnabled

 <TabControl x:Name="Items"
                    Grid.Row="1"
                    TabStripPlacement="Left">
            <TabControl.ItemContainerStyle>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
                </Style>
            </TabControl.ItemContainerStyle>
        </TabControl>

ShellViewModel は似ていますが、最初のビュー モデルが有効になっていないため、2 番目のビュー モデルをアクティブにしています。

public class HeaderViewModel : BaseTabViewModel
    {
        public HeaderViewModel(string name)
        {
            DisplayName = name;
            IsEnabled = false;
        }
    }

  public ShellViewModel(Tab2ViewModel tab2ViewModel,
                              Tab3ViewModel tab3ViewModel
            )
        {
             Items.Add (new HeaderViewModel ("ΓΕΝΙΚΑ"));
            Items.Add(tab2ViewModel);
            Items.Add(tab3ViewModel);

            ActivateItem (tab2ViewModel);
        }

ビュー モデルのコンストラクターでタブ項目を有効または無効にします。

 public Tab2ViewModel()
        {
            DisplayName = "Προσωπικό";
            IsEnabled = true;
        }

スタイルが適用されていない結果、最初のタブ項目が無効になり、次の 2 つの項目が有効になります。

ここに画像の説明を入力

于 2012-11-04T04:54:59.620 に答える