WPF/MVVM을 배우기 위해 Yahtzee 게임을 만들고 있습니다. 나는 약간의 진전을 이루었지만 ICommand를 사용하여 임의의 int 값 ("롤링")을 내 오지에주는 방법을 고민하고 있습니다. 그래서 나는이 같은 주사위 클래스가 있습니다ICommand를 사용하여 모델의 속성을 변경하려면 어떻게해야합니까?
public class Die : INotifyPropertyChanged
{
int _id;
int _roll;
bool _checked;
}
이러한 속성은 모두 같은 생성자를 가지고있다 :
이public bool Checked
{
get { return _checked; }
set { _checked = value;
OnPropertyChanged("Checked"); }
}
"_id"는 오지를 추적하는 단지 방법입니다, 심지어 확실하지 그건 필요합니다. "_roll"은 임의의 값입니다.이 값은 바로 옆에있는 질문이며, "_checked"는 플레이어가 다음 던짐을 위해이 값을 유지하고 싶다면 체크 할 수있는 체크 박스입니다.
내 뷰 모델은 다음과 같습니다
public class DiceViewModel : INotifyPropertyChanged
{
Die _die;
public DiceViewModel()
{
myDices = new ObservableCollection<Die>()
{
new Die { Id = 1, Roll = 0, Checked = false },
new Die { Id = 2, Roll = 0, Checked = false },
new Die { Id = 3, Roll = 0, Checked = false },
new Die { Id = 4, Roll = 0, Checked = false },
new Die { Id = 5, Roll = 0, Checked = false },
};
}
}
명령을 생성에서 내 최고의 시도는 다음과 같이이다 :
public class RollDiceCommand : ICommand
{
private Action<object> _method;
public event EventHandler CanExecuteChanged;
public RollDiceCommand(Action<object> method)
{
_method = method;
}
public bool CanExecute (object parameter)
{
if ((bool)parameter == true)
{
return true;
}
else
return false;
}
public void Execute(object parameter)
{
}
}
그래서 만드는 방법을 이해 할 수없는 두 가지 방법입니다 각 주사위의 _checked 속성이 false인지 아닌지 확인하고, false 인 경우 현재 주사위를 새로운 숫자로 지정하십시오. 내 "롤 주사위"버튼을 누른 후 5 개의 주사위를 반복해야합니다.
- RollDiceCommand를 자체 파일로 만들거나 VM/M에 넣어야합니까?
- CanExecute 매개 변수로 _checked 속성을 얻는 방법
- 하나의 거푸집의 _roll 값을 임의 화하는 방법은 질문 2에서이 문제도 해결할 것으로 생각됩니다.
나는 당신에게 무엇을 말해야할지 모르겠다. 또는 적어도 충돌없이 컴파일되고 실행됩니다. 편집 : 지금 무슨 뜻인지보고 편집 해 보겠습니다. – Tom
오늘 잠이 깬다 왜 내가 "그 위에"넣었는지 모르겠다 – Tom