簡體   English   中英

C# TabControl 綁定與 WPF 中的 linq groupby 語句

[英]C# TabControl binding with linq groupby statement in WPF

我是 WPF 的新手,我正在嘗試將分組對象列表綁定到 tabControl,我只是設法做到了一半

這是我的 C# 代碼在構造函數中:

IEnumerable<Validation> validations = ReflectiveEnumerator.GetEnumerableOfType<Validation>().Where(validation => validation.IsActive);

tabControl.ItemsSource = validations.GroupBy(validation => validation.TabName); 

我的 xaml 代碼是:

<TabControl x:Name="tabControl" Margin="10,10,10,37" ItemsSource="{Binding Groups}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Key}"/>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <WrapPanel>
                <TextBlock Text="{Binding ValidationName}"/>
            </WrapPanel>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

所以我按組得到了一個標簽,這正是我所期待的,但在我的包裝面板中,我每個標簽只有 1 個 ValidationName,我期待多個。 讓內容面板遍歷我的組缺少什么。

當我不分組時,我有多個具有相同名稱的 tabItem,這不是我要找的。

我的驗證類看起來像:

public class Validation
{
    public string ValidationName {get; private set;}
    public string TabName{get; private set;}
    public bool IsActive{get; private set;}
}

您可以在 TabControl 的 ContentTemplate 中使用 ItemsControl:

<TabControl x:Name="tabControl" Margin="10,10,10,37" ItemsSource="{Binding Groups}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Key}"/>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{Binding}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding ValidationName}" Margin="10"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

上面的示例標記將在每個 TabItem 內的 WrapPanel 中的每個組中的每個項目顯示一個 TextBlock。

暫無
暫無

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

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