Я пытаюсь запустить Caliburn Micro в своем проекте, и у меня возникают проблемы с пониманием методов защиты (Can*
) в контексте свойств, которые не связаны с представлением (извините, если я получаю моя терминология неверна).
Я адаптировал Пример Тима Кори , чтобы добавить этот фрагмент:
private bool _connected;
public bool Connected
{
get { return _connected; }
set { _connected = value; NotifyOfPropertyChange(() => Connected); }
}
public bool CanSayHello(bool connected)
{
return connected;
}
public void SayHello(bool connected)
{
Console.WriteLine("Hello!");
}
public bool CanClearText(string firstName, string lastName)
{
if (String.IsNullOrWhiteSpace(firstName) && string.IsNullOrWhiteSpace(lastName))
{
Connected = false;
return false;
}
else
{
Connected = true;
return true;
}
}
И связанный xaml:
<!-- Row 4 -->
<Button x:Name="ClearText" Grid.Row="4" Grid.Column="1">Clear Names</Button>
<Button x:Name="SayHello" Grid.Row="4" Grid.Column="2">Say Hello</Button>
Кнопка SayHello
никогда не активируется (даже если кажется, что она должна иметь то же состояние, что и CanClearText
). Намерение состоит в том, чтобы использовать Connected
в качестве посреднической собственности; в приложении, которое я собираю, идея заключается в том, что Connected
фактически устанавливается внешним сообщением (из модели - не связано с представлением).
Этот вопрос добираюсь до этого немного, но я бы хотел избежать явного вызова NotifyOfPropertyChange(() => CanSayHello);
и позволить фреймворку Caliburn Micro сделать всю работу за меня. Я довольно новичок в этом, и я уверен, что я упускаю что-то простое - спасибо за вашу помощь.