【问题标题】:grouping controls together in WPF在 WPF 中将控件分组在一起
【发布时间】:2023-03-23 05:28:01
【问题描述】:

我正在构建一个需要显示文件名列表及其相应控件的 WPF 应用程序。现在我有一个包含一些列的网格(即第 1 列是 TextBlock 的文件名,第 2 列是 CheckBox 指示是否选择了此文件等,并且每个文件名都有一行。)

除非触发i 行中的控件,否则它可以工作,我必须搜索整个网格以找到i 行中的其他控件并相应地更改它们。是否有一种自然的方式将控件组合在一行中,以便轻松找到一个给定的控件?

注意:自然,我的意思是 WPF 内置的东西。为此构造UnionFind 是不自然的。

【问题讨论】:

  • 自然的方式是为文件定义DataTemplate,此模板包含TextBlockCheckBox 和其他grouped 控件以表示文件及其各种属性。

标签: c# wpf


【解决方案1】:

FI 建议使用 ItemsControl。像这样的

<ItemsControl ItemsSource="{Binding Files}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Label Content="{Binding FileName}" />
                <CheckBox IsChecked="{Binding IsSelected}"/>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>   

使用模型的List&lt;MyModel&gt;ObservableCollection&lt;MyModel 作为 ItemsSource

public class MyModel
{
    public string FileName { get; set; }
    // And so on ...
}

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多