Я делаю Windows 7 телефона и пытаюсь сделать это с помощью MVVM. Я бы хотел, чтобы модель моего представления была максимально чистой, но я не уверен, как сделать диалоговое окно. Я использую свет MVVM, и я знаю, что у них есть система обмена сообщениями или что-то еще, но не совсем уверен, как ее использовать.Как обращаться с диалоговыми окнами MessageBox при использовании шаблона MVVM (MVVM Light ToolKit)
Я хотел бы использовать Guide.BeginShowMessageBox
, поскольку это, кажется, дает больше возможностей, чем стандартное диалоговое окно.
Как это сделать, не нарушая шаблон MVVM. AS, когда я загружаю представление, я хочу запустить триггер загрузки, а затем проверить некоторые условия. Если условия выполнены, отобразите диалоговое окно.
// Vm
public RelayCommand MainPageLoaded
{
get
{
if (!NetworkInterface.GetIsNetworkAvailable())
{
// breaks MVVM now as have view code in viewmodel. Need to take out somehow
Guide.BeginShowMessageBox("Test", "Test network", new List<string>() { "Yes", "No" }, 0, MessageBoxIcon.Warning, asyncResult =>
{
int? returned = Guide.EndShowMessageBox(asyncResult);
// if yes then work offline mode? Maybe another property in ViewModel will get set to say offline mode?
}, null);
}
return null;
}
set
{
// Not sure what to put here.
}
}
// Просмотр
<i:Interaction.Triggers>
<i:EventTrigger>
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding MainPageLoaded}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
Edit Другая проблема я имею. У меня есть список, который связан с некоторыми данными, которые хранятся в этом свойстве
public ObservableCollection<ContactGroup> ContactGroups { get; set; }
затем на кране у меня есть RelayCommand, которая должна быть запущена
public ICommand GroupContactTapped
{
get
{
return new RelayCommand<GestureEventArgs>(e =>
{
var selectedTextBlock = e.OriginalSource as TextBlock;
MessageBox.Show(selectedTextBlock.Tag.ToString());
});
}
}
Но я не знаю, как найти который был «постучал», не подвергая источник текстовому блоку.
Какой у вас вопрос? –
Обновлен мой вопрос, чтобы было ясно. Также добавлен код, с которым я пытался работать. – chobo2