我不确定说出标题的最佳方法,但找不到相关的问题,但是如果有的话,请指导我。
我正在尝试创建一个投标屏幕,其中显示的按钮数量将取决于用户设置的投标类型(现金,支票,信用卡,借记卡,礼品卡等)。
所以,如果我有这样的课程:
public class TenderType
{
public string DisplayName { get; set; }
// ... other implementation details
}
在我的DataContext上,我有一个TenderTypes集合,如下所示:
public ObservableCollection<TenderType> TenderTypes { get; private set; }
那么我如何根据集合中有多少TenderType实例来显示我的视图udpate显示的按钮数量,并将其Text属性绑定到集合中相应项目的DisplayName?
答案 0 :(得分:1)
您可以使用ItemsControl并为TenderType创建数据窗口以显示Button。
这样它只会显示列表中的按钮
的Xaml:
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication8"
Title="MainWindow" Height="105" Width="156" Name="UI">
<Window.Resources>
<DataTemplate DataType="{x:Type local:TenderType}">
<Button Content="{Binding DisplayName}" />
</DataTemplate>
</Window.Resources>
<Grid DataContext="{Binding ElementName=UI}">
<ItemsControl ItemsSource="{Binding TenderTypes}"/>
</Grid>
</Window>
代码:
public partial class MainWindow : Window
{
private ObservableCollection<TenderType> _sourceData = new ObservableCollection<TenderType>();
public MainWindow()
{
InitializeComponent();
TenderTypes.Add(new TenderType { DisplayName = "Stack" });
TenderTypes.Add(new TenderType { DisplayName = "Overflow" });
}
public ObservableCollection<TenderType> TenderTypes
{
get { return _sourceData; }
set { _sourceData = value; }
}
}
public class TenderType
{
public string DisplayName { get; set; }
}
结果: