Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public void ShowView2CommandExecute()
{
Messenger.Default.Send(new NotificationMessage("ShowView2"));
}
public partial class View1 : UserControl
{
public View1()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage>(this, NotificationMessageReceived);
}
private void NotificationMessageReceived(NotificationMessage msg)
{
if (msg.Notification == "ShowView2")
{
var view2 = new view2();
view2.Show();
}
}
}
1. Насколько фреймворк готов к продакшену? Есть ли выпущенные приложения?
2. С утечками памяти проблем нет? Насколько я вижу, все View будут создаваться фреймворком, «ручной» доступ к ним будет затруднён. Есть ли уверенность, что View будут вовремя разрушены?
3. Убедите меня, что фреймворк будет развиваться и через условный год будет в актуальном состоянии :) Кто-то кроме вас участвует в разработке?
Что будет, если я захочу использовать компоненты DevExpress или иные? Только допиливать самому?
var member = AttachedBindingMember.CreateMember<DataGridView, object>("SelectedItem",
(info, view) =>
{
var row = view.CurrentRow;
if (row == null)
return null;
return row.DataBoundItem;
}, (info, view, item) =>
{
view.ClearSelection();
if (item == null)
return;
for (int i = 0; i < view.Rows.Count; i++)
{
if (Equals(view.Rows[i].DataBoundItem, item))
{
var row = view.Rows[i];
row.Selected = true;
}
}
}, "CurrentCellChanged"); //CurrentCellChanged - событие в DataGridView, которое отвечает за изменение свойства.
//Регистрация свойства
BindingServiceProvider.MemberProvider.Register(member);1) У вас есть что-то готовое для списков?
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
pkg:ItemTemplate="@layout/_productlisttemplate"
pkg:Bind="ItemsSource GridViewModel.ItemsSource; SelectedItem GridViewModel.SelectedItem; ScrollToSelectedItem true" />
public class ListItemTemplateSelector : ResourceDataTemplateSelectorBase<ListItemModel>
{
public override int TemplateTypeCount
{
get { return 2; }
}
protected override int SelectTemplate(ListItemModel item, object container)
{
if (item.IsValid)
return Resource.Layout._ListItemTemplate;
return Resource.Layout._ListItemTemplateInvalid;
}
}
//Регистрация селектора:
BindingServiceProvider
.ResourceResolver
.AddObject("listItemTemplateSelector", new BindingResourceObject(new ListItemTemplateSelector()));
<ListView android:layout_width="fill_parent"
android:layout_height="wrap_content"
pkg:Bind="ItemsSource ItemsSource; ItemTemplateSelector $listItemTemplateSelector;" />
2) Я не увидел поддержку ValueConverters, она не предусмотрена?
//MyColorConverter - класс который реализует интерфейс IBindingValueConverter
Color SourceColor, Converter=MyColorConverter
//Эквивалентный синтаксис
Color $MyColorConverter(SourceColor)
MugenMvvmToolkit — кроссплатформенный MVVM фреймворк