gpt4 book ai didi

c# - 如何使 ListBox.ItemTemplate 可重用/通用

转载 作者:可可西里 更新时间:2023-11-01 03:13:54 25 4
gpt4 key购买 nike

我试图了解如何最好地扩展 ListBox 控件。作为一种学习体验,我想构建一个 ListBox,其 ListBoxItem 显示一个 CheckBox 而不仅仅是文本。我使用 ListBox.ItemTemplate 以基本方式实现了它,显式设置了我想要数据绑定(bind)到的属性的名称。一个例子胜过一千个字,所以...

我有一个用于数据绑定(bind)的自定义对象:

public class MyDataItem {
public bool Checked { get; set; }
public string DisplayName { get; set; }

public MyDataItem(bool isChecked, string displayName) {
Checked = isChecked;
DisplayName = displayName;
}
}

(我构建了一个列表并将 ListBox.ItemsSource 设置为该列表。)我的 XAML 如下所示:

<ListBox Name="listBox1">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Checked}" Content="{Binding Path=DisplayName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

这行得通。但我想让这个模板可重用,即我想绑定(bind)到具有“Checked”和“DisplayName”以外属性的其他对象。我如何修改我的模板,使其成为资源,在多个 ListBox 实例上重用它,并为每个实例绑定(bind) IsCheckedContent 到任意属性名称?

最佳答案

将您的 DataTemplate 创建为资源,然后使用 ListBox 的 ItemTemplate 属性引用它。 MSDN has a good example

<Windows.Resources>
<DataTemplate x:Key="yourTemplate">
<CheckBox IsChecked="{Binding Path=Checked}" Content="{Binding Path=DisplayName}" />
</DataTemplate>
...
</Windows.Resources>

...
<ListBox Name="listBox1"
ItemTemplate="{StaticResource yourTemplate}"/>

关于c# - 如何使 ListBox.ItemTemplate 可重用/通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com