我正在尝试创建一个显示'字符列表的应用程序。睡眠,饥饿,无聊和健康属性。我想显示当前角色及其状态(状态取决于哪个值最大(睡眠,饥饿和无聊))。由于status不是角色类中的属性,因此我无法像使用名称和健康一样执行此操作:
<ListView x:Name="TamagochiList" Margin="10,34,10,118" ItemsSource="{Binding TamagochiList}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Path=Name}" />
<GridViewColumn Header="Health" Width="200" DisplayMemberBinding="{Binding Path=Health}" />
</GridView>
</ListView.View>
</ListView>
我尝试在viewmodel中添加它,但我目前不知道如何使用它:
public string TamagochiStatus(Tamagochi t)
{
if(t.Boredom >= t.Hunger && t.Boredom >= t.Sleep)
{
return "Bored";
}
if(t.Hunger >= t.Boredom && t.Hunger >= t.Sleep)
{
return "Hungry";
}
if(t.Sleep >= t.Boredom && t.Sleep >= t.Hunger)
{
return "Sleepy";
}
return "Geen status";
}
尽我所能找到它,但我不确定选择哪个关键字。
答案 0 :(得分:0)
由于Status
是数据本身的属性,而不仅仅是UI的工件,因此将计算移动到模型类中的属性中。
public class Character
{
public string Name {get; set;}
public int Health {get; set;}
public int Boredom {get; set;}
public int Sleep {get; set;}
public int Hunger {get; set;}
public string Status
{
get
{
if(Boredom >= Hunger && Boredom >= Sleep)
{
return "Bored";
}
if(Hunger >= Boredom && t.Hunger >= Sleep)
{
return "Hungry";
}
if(Sleep >= Boredom && Sleep >= Hunger)
{
return "Sleepy";
}
return "Geen status";
}
}
然后通过
直接绑定到该属性<GridViewColumn Header="Status" Width="200" DisplayMemberBinding="{Binding Path=Status}" />