@xamarin_russia

Страница 606 из 619
Илья
16.10.2018
19:12:36
а на старых ведрах будет тормозить все

включая операционную систему

Кита
16.10.2018
19:13:53
любая либа - это черный ящик, коим она и должна быть. но кому-то нравится велосипеды делать)
Скрытая кодогенерация это двойной чёрный ящик. Что касаемо библиотек то дебажить можно и их в принципе, а вот Fody не поддаётся отладке

Google
Кита
16.10.2018
19:13:57
Короче все зависит от задач. Если кровавый тырпрайз где пофиг на всех это один разговор, если b2c это совершенно другой. Рекомендовать к использованию ту или иную либу без знания в каком контексте она будет применена - делать бяку

GETHEME
16.10.2018
19:17:35
@senglory public int Busy { get { return busy; } set { if (busy != value) { busy = value; OnPropertyChanged("Busy"); } } } public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string prop = "") { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(prop)); }

попробуй так заменять PropretyChangedEventHanler, и он OnPropretyChanged

Илья
16.10.2018
19:22:54
Короче все зависит от задач. Если кровавый тырпрайз где пофиг на всех это один разговор, если b2c это совершенно другой. Рекомендовать к использованию ту или иную либу без знания в каком контексте она будет применена - делать бяку
соглашусь. с оговоркой - когда в b2c вырастает до момента когда есть деньги на микрооптимизации - бесспорно, надо вылизывать. а когда оно в минусе - на стоимости разработке надо экономить. здесь то и помогают черные ящики

Кита
16.10.2018
19:30:33
соглашусь. с оговоркой - когда в b2c вырастает до момента когда есть деньги на микрооптимизации - бесспорно, надо вылизывать. а когда оно в минусе - на стоимости разработке надо экономить. здесь то и помогают черные ящики
Ну очевидно что можно и без них. Выигрыш по скорости он только в голове, а на деле на багах все компенсируется. И не надо никаких микрооптимизаций. Просто никаких атрибутов, никаких десктопных библиотек, никаких static классов. Только ООП)

Nikolay
16.10.2018
19:54:43
В итоге, с OnPropertyChanged ни фига не работает

Kirill
16.10.2018
20:00:07
@senglory GETHEME Согласен с @ptytz - всякие такие штуки и fody - таки зло. Ради того, что бы не писать лишнюю строку подключают комбайны. Можно написать простой класс, отнаследоваться от него и писать для байндингов что-то такое: public bool Busy { get => Get<bool>(); set => Set(value); } не намного сложнее, чем просто get;set; Или стандартный подход как Монтемагно предлагает через метод SetProperty с ref параметром. В частности моя реализация (по примеру выше) тут https://github.com/Binwell/Order-King-Mobile-Core/blob/master/OrderKingCoreDemo/OrderKingCoreDemo/Helpers/Bindable.cs А вот что не работает тот код - это надо рзбираться и от способа отправки события не зависит. Чем меньше всяких библиотек и прочего мусора, тем лучше проект, быстрее собирается, запускается и надежнее работает.

В итоге, с OnPropertyChanged ни фига не работает
покажи еще раз целиком xaml и ViewModel

GETHEME
16.10.2018
20:01:13
@BOOMikru я тоже согласен с @ptytz

Nikolay
16.10.2018
20:02:45
using System; using System.Diagnostics; using System.Collections.Generic; using System.Linq; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using WiFiManager.Common.BusinessObjects; using Xamarin.Forms; using Xamarin.Forms.PlatformConfiguration; namespace WiFiManager.Common { public class MainPageVM : INotifyPropertyChanged { IWifiOperations mgr; #region Properties ObservableCollection<WifiNetworkDto> _WifiNetworks=new ObservableCollection<WifiNetworkDto> (); public ObservableCollection<WifiNetworkDto> WifiNetworks { get { return _WifiNetworks; } set { SetProperty(ref _WifiNetworks, value, "WifiNetworks"); } } WifiNetworkDto _selectedNetwork; public WifiNetworkDto SelectedNetwork { get { return _selectedNetwork; } set { SetProperty(ref _selectedNetwork, value, "SelectedNetwork"); } } bool isBusy; public bool IsBusy { get { return isBusy; } set { SetProperty(ref isBusy, value, "IsBusy"); } } bool isConnected; public bool IsConnected { get { return isConnected; } set { SetProperty(ref isConnected, value, "IsConnected"); } } #endregion public event PropertyChangedEventHandler PropertyChanged; public MainPageVM(IWifiOperations mgr) { this.mgr = mgr; SaveCommand = new Command(DoSave); SaveJsonCommand = new Command(DoSaveJson); ConnectCommand = new Command(ExecuteConnect); DisconnectCommand = new Command(DoDisconnect); RefreshNetworksCommand = new Command(DoRefreshNetworks); DeleteNetworkCommand = new Command(DoDeleteNetwork); IsConnected = mgr.IsConnected(); } public void SortListByLevel() { var lst1 = WifiNetworks.OrderBy(nw => Math.Abs( nw.Level)); WifiNetworks = new ObservableCollection<WifiNetworkDto>(lst1); } public void DoRefreshNetworks() { try { IsBusy = true; var lst1 = mgr.GetActiveWifiNetworks(); // for quick search var allrecsQuickSearch = new Dictionary<string, WifiNetworkDto>(); foreach (var item in lst1) { allrecsQuickSearch.Add (item.BssID, item); } if (mgr.CanLoadFromFile()) { var lst2 = mgr.GetWifiNetworksFromCSV(); foreach (var existingWifi in lst1) { var wifiDtoFromFile = lst2.GetExistingWifiDto(existingWifi); var isOnAir = wifiDtoFromFile != null; if (isOnAir) { // update existing Wifi info from file (except for BSSID) existingWifi.IsInCSVList = isOnAir; existingWifi.IsEnabled = wifiDtoFromFile.IsEnabled; existingWifi.Password = wifiDtoFromFile.Password; existingWifi.Provider = wifiDtoFromFile.Provider; } } } WifiNetworks = new ObservableCollection<WifiNetworkDto>(lst1); SortListByLevel(); IsConnected = mgr.IsConnected(); SelectedNetwork = null; } finally { IsBusy = false; } }

<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:WiFiManager" xmlns:shapes="clr-namespace:Stormlion.ShapeControl;assembly=Stormlion.ShapeControl" x:Class="WiFiManager.MainPage" x:Name="MainPageMain"> <ContentPage.Resources> <local:EmptyStringCvt x:Key="EmptyPwdCvt" /> <local:NetworkTypeCvt x:Key="WEPNetworkCvt" /> <!-- Default DataTemplate --> <DataTemplate x:Key="DefaultDataTemplate"> </DataTemplate> <DataTemplate x:Key="NoteDataTemplate"> <ViewCell> <StackLayout Orientation="Vertical" HorizontalOptions="Fill" > <StackLayout.Resources> <Style TargetType="StackLayout"> <Style.Triggers> <DataTrigger TargetType="StackLayout" Binding="{Binding IsInCSVList}" Value="True"> <Setter Property="BackgroundColor" Value="Gray" /> </DataTrigger> <DataTrigger TargetType="StackLayout" Binding="{Binding IsSelected}" Value="True"> <Setter Property="BackgroundColor" Value="OrangeRed" /> </DataTrigger> <DataTrigger TargetType="StackLayout" Binding="{Binding IsEnabled}" Value="False"> <Setter Property="BackgroundColor" Value="DarkRed" /> </DataTrigger> </Style.Triggers> </Style> </StackLayout.Resources> <Grid RowSpacing="1"> <Grid.RowDefinitions> <RowDefinition Height="25"/> <RowDefinition Height="25"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="10"/> <ColumnDefinition Width="10"/> </Grid.ColumnDefinitions> <Label Grid.Row="0" Grid.Column="0" Text="{Binding Name}" HeightRequest="20" /> <StackLayout Grid.Row="1" Grid.Column="0" Orientation="Horizontal" HorizontalOptions="Fill" HeightRequest="20"> <Label Text="{Binding BssID}" HeightRequest="20" MinimumWidthRequest="180" /> <Label Text="{Binding NetworkType}" HeightRequest="20" FontSize="Micro" /> </StackLayout>

Google
Kirill
16.10.2018
20:04:24
@senglory перенеси это на pastebin / gist

Nikolay
16.10.2018
20:06:52
XAML - https://pastebin.com/6qmCvz4J VM - https://pastebin.com/B6KnkrAp

Kirill
16.10.2018
20:10:22
@senglory попробуй прописать IsRunning="true" и в xaml.cs классе есть что-то?

Nikolay
16.10.2018
20:11:27
Kirill
16.10.2018
20:11:57
Есть, в конструкторе пойдет?
то в xaml пропиши. скинь xaml.cs

Nikolay
16.10.2018
20:14:01
https://pastebin.com/40sTfyT4

Не, добавление vm.IsBusy = true; в конструкторе ничго не решило

Nikolay
16.10.2018
20:15:31
У меня нет IsRunning :)

Kirill
16.10.2018
20:16:14
и зачем менять и в VM и на странице? перенеси всё во VM и тогда проверяй. Сейчас могут конфликтовать изменения с разных место

У меня нет IsRunning :)
https://i.imgur.com/Hk0USdi.png

Nikolay
16.10.2018
20:16:34
Ааа, в самом контроле

mute
16.10.2018
20:26:27
ребят разъясните за нугеты плз. есть старый проект на формс. там нугеты добавляются в csproj в том числе и для нативных. и есть новый проект на другом компе и созданный в самой крайней vs4mac. в нем пакеты в андроед проекте добавляются в packages.config. второй способ вроде устаревший. это можно поменять или это норм и не делать мозг? первый проект был создан изначально в виндовой стулии, второй изначально в маковой

я наверно дурачек, нр маны по миграции только для виндовой студии находил

Nikolay
16.10.2018
20:34:20
Сейчас в .xaml.cs нет явного вызова IsBusy=true

Все только в самом VM

Google
Kirill
16.10.2018
20:35:23
Сейчас в .xaml.cs нет явного вызова IsBusy=true
зато к тем же параметрам вьюхи есть https://i.imgur.com/a98fhvE.png

mute
16.10.2018
20:36:42
рефы на нугеты или тип сам ключ что юзать рефы в csproj?

Kirill
16.10.2018
20:36:58
рефы на нугеты или тип сам ключ что юзать рефы в csproj?
сами пакеты с версиями перечислить

Nikolay
16.10.2018
20:43:39
Снес все модификации IsBusy в xaml.cs - пофигу

GETHEME
16.10.2018
20:51:52
Nikolay а если поставить к binding-у Binding-mode oneWay???, IsRunning="{Binding IsBusy,Mode=OneWay}" IsVisible="{Binding IsBusy,Mode=OneWay}"???

IsRunning="{Binding IsBusy,Mode=OneWay}" IsVisible="{Binding IsBusy,Mode=OneWay}"

GETHEME
16.10.2018
20:56:24
да у Activator по умольчаню эти пропрети в моде : oneWay

Kirill
16.10.2018
21:01:32
Тогда прям магия, должно работать так

Nikolay
16.10.2018
21:06:25
только прямое присвоение из RefreshCoords_Clicked работает

бред...

Kirill
16.10.2018
21:14:45
пробовал везде убрать ручное присвоение? перенеси всю логику во VM и проверь так, сейчас лапша. Так то прописано всё вроде правильно и должно работать

Кстати для SetProperty лучше передавать название поля через nameof(IsBusy), хотя в данно случае вообще не обязательно его указывать, ибо есть [CallerMemberName]

GETHEME
16.10.2018
21:35:24
Kirill Nikolay меня тут тоже смущает в VM метод DoRefreshNetworks(), он типом void, мне кажется все вроде норм работает но на много быстрей обработаеся finaly(), я бы для проверке просил бы поставить. а по суте если хорошо понял это в нем должен посходить изменении значении IsBusy,

PM
16.10.2018
21:36:23
Здравствуйте, товарищи

что можете сказать, насколько вы довольны Ксамарином

как средством кросс-платформенной разработки

довольны ли кастомеры, хватает ли функционала под среднестатистические нужды кастомеров малого и среднего бизнеса?

Google
GETHEME
16.10.2018
21:39:00
@senglory и ещё в Xaml, ActivityIndicator находиться в stackLayout с гридом

GETHEME
16.10.2018
21:40:04
получается что он не будет по центру экран распологаться,

Андрей Родионович
16.10.2018
21:42:02
Он по центру по x должен быть

Хотя там указано только по y

GETHEME
16.10.2018
21:43:08
там он еще явно указал VerticalOptions="Center"

Андрей Родионович
16.10.2018
21:44:42
<StackLayout Grid.Row="0" HorizontalOptions="Fill" Orientation="Horizontal"> Вот этой строчки я тоже не понял

HorizontalOptions="Fill"

Стэк находится в гриде

Зачем там horizontaloptions?

GETHEME
16.10.2018
21:51:35
короче, тут проблема не только в Binding-е, надо пересмотрить в xaml, и ещё вся логика, я тут извиняюсь не знаю какую фичу хотели реализавать, но много надо пересмотрить.

я пошел, всем пока

PM
16.10.2018
21:52:23
PM BA, [17.10.18 00:36] Здравствуйте, товарищи PM BA, [17.10.18 00:36] что можете сказать, насколько вы довольны Ксамарином PM BA, [17.10.18 00:36] как средством кросс-платформенной разработки PM BA, [17.10.18 00:37] довольны ли кастомеры, хватает ли функционала под среднестатистические нужды кастомеров малого и среднего бизнеса?

Андрей Родионович
16.10.2018
21:54:23
только прямое присвоение из RefreshCoords_Clicked работает
Я не уверен конечно, но биндинг то не спадает, если ты в коде явно ставишь значение IsRunning индикатору?

По моему такое проворачивать нельзя

Slava
16.10.2018
22:01:39
Кита
16.10.2018
22:10:08
https://youtu.be/SGG_5ExlA68 вот тут по чесноку преимущественно

Google
E
17.10.2018
06:25:43


какие названия ресурсов нужно указывать в настройках чтобы google понял? Приложение на Xamarin.Forms

Aleksandr
17.10.2018
06:39:49
всем привет. Кто нибудь в курсте как в Edit отловить момент когда происходит перенос на новую строку если слово не помещяется в ширину елемента? Нужно сделать чтобы происходило увеличение edit до определенной высоты, но улечиние происходит только если явно добавить символ новой строки

Mikhail
17.10.2018
07:00:33
Хотите мобильную разработку в вашей компании переводить на кроссплатформу или просто исследуете инструменты для домашних поделок? Можно посмотреть, например, вот это https://www.youtube.com/watch?v=RTbX7IyMypY
ну... в нашей компании было так: - надо сделать мобильное приложение, и.... исполнителем - будешь ... ТЫ! - я ничего не знаю про мобильную разработку - не важно! - C# знаешь? знаешь! пиши на Xamarin - какая разница то?! )) прошёл месяц - первая версия сделана ) убого выглядит но сделана... и мне присылают новый дизайн (мы это с заказчиками согласовали) - я смотрю, ужасаюсь ... и понимаю что ну тут надо Nativ - быстрее будет и красивее переписываю всё на на Xamarin Native с Forms, пока переписываю, понимаю что по сути шаг влево-вправо... и надо гуглить уже решения для Android на Jave и транслировать на C# + под себя... и... а в таком случае а зачем C#?! собственно, в Java некоторые конструкции проще выглядят (к примеру на лету в коде new ClassName { override void onTextChanged { ...}) и... паралельно делаю версию на Java :) показываю начальству что это весит намного меньше, запускается быстрее, ну и вообще это родное для андроид )) а руководство говорит - нет! не будет ни какой Java, и так у нас зоопарк технологий и сотрудников под каждый стек фиг найдёшь! ты мне предлагаешь ещё и специалистов знающих Java искать? а потом - когда надо под IOS -знающих Swift или Objective C? нет!! будем писать на C# )) Xamarin!! и всё тут!!! :)

Kirill
17.10.2018
07:26:29
ну... в нашей компании было так: - надо сделать мобильное приложение, и.... исполнителем - будешь ... ТЫ! - я ничего не знаю про мобильную разработку - не важно! - C# знаешь? знаешь! пиши на Xamarin - какая разница то?! )) прошёл месяц - первая версия сделана ) убого выглядит но сделана... и мне присылают новый дизайн (мы это с заказчиками согласовали) - я смотрю, ужасаюсь ... и понимаю что ну тут надо Nativ - быстрее будет и красивее переписываю всё на на Xamarin Native с Forms, пока переписываю, понимаю что по сути шаг влево-вправо... и надо гуглить уже решения для Android на Jave и транслировать на C# + под себя... и... а в таком случае а зачем C#?! собственно, в Java некоторые конструкции проще выглядят (к примеру на лету в коде new ClassName { override void onTextChanged { ...}) и... паралельно делаю версию на Java :) показываю начальству что это весит намного меньше, запускается быстрее, ну и вообще это родное для андроид )) а руководство говорит - нет! не будет ни какой Java, и так у нас зоопарк технологий и сотрудников под каждый стек фиг найдёшь! ты мне предлагаешь ещё и специалистов знающих Java искать? а потом - когда надо под IOS -знающих Swift или Objective C? нет!! будем писать на C# )) Xamarin!! и всё тут!!! :)
Приложение это не только UI, но и бизнес логика, которая на Xamarin вносится в отдельный проект и используется. Чисто на Java/Swift такого не сделать

mute
17.10.2018
07:32:57
ну... в нашей компании было так: - надо сделать мобильное приложение, и.... исполнителем - будешь ... ТЫ! - я ничего не знаю про мобильную разработку - не важно! - C# знаешь? знаешь! пиши на Xamarin - какая разница то?! )) прошёл месяц - первая версия сделана ) убого выглядит но сделана... и мне присылают новый дизайн (мы это с заказчиками согласовали) - я смотрю, ужасаюсь ... и понимаю что ну тут надо Nativ - быстрее будет и красивее переписываю всё на на Xamarin Native с Forms, пока переписываю, понимаю что по сути шаг влево-вправо... и надо гуглить уже решения для Android на Jave и транслировать на C# + под себя... и... а в таком случае а зачем C#?! собственно, в Java некоторые конструкции проще выглядят (к примеру на лету в коде new ClassName { override void onTextChanged { ...}) и... паралельно делаю версию на Java :) показываю начальству что это весит намного меньше, запускается быстрее, ну и вообще это родное для андроид )) а руководство говорит - нет! не будет ни какой Java, и так у нас зоопарк технологий и сотрудников под каждый стек фиг найдёшь! ты мне предлагаешь ещё и специалистов знающих Java искать? а потом - когда надо под IOS -знающих Swift или Objective C? нет!! будем писать на C# )) Xamarin!! и всё тут!!! :)
жиза вообще. 1в1 только на джаве не пишу.

Kirill
17.10.2018
07:34:28
он меняет только если есть перевод строки
Ну и если текст не влез и сам перенёсся

а как же kotlin/native? мне каж это круче замарина будет
Возможно будет. Пока нельзя воспринимать всерьез- ещё очень сырой продукт

Страница 606 из 619