我有一个程序,当您单击按钮时,它会创建一个具有随机属性的人。
如果标签的内容随着创建的每个不同的对象(人)而变化,你如何在真正的 MVVM 风格中定义它?我不能让 View 模型控制 View ,对吗?所以我不能
label.Content = person.hair_Color;
public class Person()
get set hair_Color, get set shirt_color, yadda yadda
因为可以有 1 个或无限多的人,如果我不知道会有多少人,我如何动态添加标签的内容?
最佳答案
在“真正的 MVVM 风格”中,您将拥有如下内容:
意见
主视图包含:
<Button Command={Binding AddPerson}
/> <ListBox ItemsSource="{Binding Persons}"/>
PersonView 包含:
<TextBlock Text="{Binding Shirt}"/>
<TextBlock Text="{Binding Hair}"/>
<Rectangle Background="{Binding Shirt, Converter={stringToColorConverter}/>
<Rectangle Background="{Binding Hair, Converter={stringToColorConverter}/>
StringToColorConverter 类,从字符串返回颜色
View 模型
MainViewModel 包含:
public ObservableCollection<PersonViewModel> Persons { get; set; }
public Command AddPerson { get; set; }
PersonViewModel 包含:
public string Shirt { get; set; }
public string Hair { get; set; }
这几乎只是您实际拥有的模型,因为实现取决于所使用的框架,但想法就在这里。你绑定(bind),你转换,等等。
关于c# - WPF如何从MVVM中的动态对象更改属性标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41827826/