2017-04-02 27 views
1

我正在尝试创建一个应用程序,显示包含属性Sleep,Hunger,Boredom和Health的'Characters'列表。我想显示当前角色及其状态(状态取决于哪个值最大(睡眠,饥饿和无聊))。由于状态在字符类心不是一个属性我不能够做到这一点,因为我的名字和健康做:XAML自定义GridViewColumn数据

<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> 

我试图在视图模型中加入这一点,但我现在不知道如何使用它:

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

我根据您可以修改你的'Character'类的假设回答绑定到该属性。也许编辑你的问题来澄清,如果不是这样的话。 –

+0

不明确的问题。 – AnjumSKhan

回答

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}" />