c# - 使用 MVVM 创建动态控件
问题描述
我正在尝试第一次使用 mvvm 创建一个动态控件。我想动态生成按钮并在按钮内显示内容。我确定我在这里遗漏了一些非常简单的东西,但我不知道它可能是什么。当我运行代码时,界面上什么也没有出现,尽管我可以看到 AvailableMonitorOC 在构造函数中填充......
这是我的 ViewModel,为了简单起见,我手动将按钮添加到可观察集合中:
public class CreateAndDisplayViewModel {
public ObservableCollection<AvailableMonitorBo> AvailableMonitorOC = new ObservableCollection<AvailableMonitorBo>();
public CreateAndDisplayViewModel() {
availableMonitorBo = new AvailableMonitorBo();
availableMonitorBo.AvailableMonitorLabel = "Label 1";
AvailableMonitorOC.Add(availableMonitorBo);
availableMonitorBo.AvailableMonitorLabel = "Label 2";
AvailableMonitorOC.Add(availableMonitorBo);
}
private AvailableMonitorBo availableMonitorBo;
public AvailableMonitorBo AvailableMonitorBo {
get { return availableMonitorBo; }
set {
availableMonitorBo = value;
}
}
}
这是我的模型:
public class AvailableMonitorBo : INotifyPropertyChanged {
private string availableMonitorLabel { get; set; }
public string AvailableMonitorLabel {
get { return availableMonitorLabel; }
set {
availableMonitorLabel = value;
OnPropertyChanged("AvailableMonitorLabel");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName) {
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) {
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这是xaml:
<ListView Grid.Row="2" Grid.Column="1"
ItemsSource="{Binding AvailableMonitorOC, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button Content="{Binding AvailableMonitorLabel}"
Width="100"
Height="25"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
解决方案
您缺少显示的主要原因是它AvailableMonitorOC
需要是 的属性CreateAndDisplayViewModel
,而不是当前的字段。
您也只需创建一个AvailableMonitorBo
实例并每次更改其标题。
推荐阅读
- python - 使用 django 模型方法作为静态函数
- node.js - 如何防止 NodeJs 中的会话劫持?
- kubernetes - ValidationError:io.k8s.api.v1.DeploymentSpec 中缺少必填字段“选择器”
- html - 在离子中设置背景不起作用
- python - 使用子图的标准误差条形图
- vba - 如何在 MS-Access 文本框中使用 Ctrl+A 以选择所有文本 - 标准模块选项
- ajax - 如何使用 jQuery 更改其他页面的内容?
- graphql - GraphQL 更新和删除突变不起作用
- ios - 如何在领域中将每种食物添加到自己的食物类别中?
- python - 为什么我越来越假?