簡體   English   中英

WPF 選項卡控件僅對第一個選項卡使用不同的 ItemTemplate

[英]WPF Tab Control to use different ItemTemplate for the first tab only

我正在使用帶有 TabControl 的 WPF。 我定義了一個 ItemTemplate,它為標題設置一個 TextBlock 和一個用於關閉選項卡的按鈕。 我希望第一個選項卡不顯示關閉按鈕。 我嘗試使用 Binding to a Public bool 在我的 ViewModel 中設置按鈕的 Visiblity 並使用 BooleanToVisibilityConverter 進行轉換,但看起來 ItemTemplate 是在創建 TabControl 時呈現的,而不是在添加每個 Tab 時呈現。

這是我的 TabControl xaml(我嘗試過使用和不使用 FallbackValue)

<TabControl x:Name="Items" Grid.Row="1" Grid.Column="0">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding DisplayName}" />
                    <Button x:Name="CloseTab" Content="X" Visibility="{Binding IsTabCloseButtonVisible, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Hidden}"
                            cal:Message.Attach="DeactivateItem($dataContext, 'true')" />
                </StackPanel>
            </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>

在 App.xaml 我有轉換器

    <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <local:Bootstrapper x:Key="Bootstrapper"/>
            </ResourceDictionary>
         </ResourceDictionary.MergedDictionaries>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    </ResourceDictionary>
</Application.Resources>

在 ViewModel 我有一個公共財產

private bool _isTabCloseButtonVisible;

    public bool IsTabCloseButtonVisible
    {
        get { return _isTabCloseButtonVisible; }
        set 
        {
            _isTabCloseButtonVisible = value;
            NotifyOfPropertyChange(() => IsTabCloseButtonVisible);
        }
    }

我已經測試了通過將 Textblock 綁定到 IsTabCloseButtonVisible 來設置屬性,並且它從 false 變為 true。

是否有可能實現我想要做的事情?

我已經設法解決了這個問題。 我在錯誤的 ViewModel 中有該屬性,因此它沒有被綁定。

暫無
暫無

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

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