【问题标题】:Xamarin.Forms bunding in release property not found未找到发布属性中的 Xamarin.Forms 绑定
【发布时间】:2018-06-02 14:17:40
【问题描述】:

让我发疯的问题)人们帮助(

有一个简单的 Xaml:

<?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:Kitchener"
             x:Class="Kitchener.MainPage"
             xmlns:al="clr-namespace:AiForms.Layouts;assembly=AiForms.Layouts"
             xmlns:viewModel="clr-namespace:Kitchener.ViewModels;assembly=Kitchener"
             x:Name="_this">

    <ContentPage.BindingContext>
        <viewModel:KitchenerMainPageVm />
    </ContentPage.BindingContext>

    <Grid Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="10" />
            <RowDefinition Height="2*" />
            <RowDefinition Height="40" />
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Label Text="{Binding MessageText}"  
               TextColor="{Binding MessageTextColor}"
               IsVisible="{Binding MessageTextVisible}"
               HorizontalOptions="Center"
               VerticalOptions="Center"  Grid.Row="1" FontSize="30" Margin="0,20,0,20" />

        <StackLayout Grid.Row="2" Orientation="Horizontal">

            <Button Text="#" Command="{Binding ShowHideSettings}" WidthRequest="40"/>

            <StackLayout IsVisible="{Binding SettingIsVisible}" Orientation="Horizontal" HorizontalOptions="FillAndExpand">

                <Entry Placeholder="Url Bullet Server"
                       FontSize="15"
                       Text="{Binding BaseUrl, Mode=TwoWay}" 
                       Completed="BaseUrl_OnCompleted"
                       HorizontalOptions="FillAndExpand"/>

            </StackLayout>
        </StackLayout>
    </Grid>

</ContentPage>

有一个简单的 ViewModel:

public class KitchenerMainPageVm : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;

            private string _baseUrl;

            public string BaseUrl
            {
                set
                {
                    _baseUrl = value;

                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("BaseUrl"));

                    Settings.BaseUrlBulletHttpServer = _baseUrl;
                }
                get => _baseUrl;
            }

            private string _messageText = "Соединение...";

            public string MessageText
            {
                set
                {
                    _messageText = value;

                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MessageText)));
                }
                get
                {
                    return _messageText;
                }
            }

            private bool _messageTextVisible = false;

            public bool MessageTextVisible
            {
                set
                {
                    _messageTextVisible = value;

                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("MessageTextVisible"));
                }
                get
                {
                    return _messageTextVisible;
                }
            }

            private Color _messageTextColor = Color.AliceBlue;

            public Color MessageTextColor
            {
                set
                {
                    _messageTextColor = value;

                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("MessageTextColor"));
                }
                get
                {
                    return _messageTextColor;
                }

            }

            private bool _buttonStackVisible = true;

            public bool ButtonStackVisible
            {
                set
                {
                    _buttonStackVisible = value;

                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ButtonStackVisible"));
                }
                get
                {
                    return _buttonStackVisible;
                }
            }

            private bool _settingIsVisible;

            public bool SettingIsVisible
            {
                set
                {
                    _settingIsVisible = value;

                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SettingIsVisible"));
                }
                get
                {
                    return _settingIsVisible;
                }
            }


            public ICommand ShowHideSettings { protected set; get; }

            private void _showHideSettings()
            {
                SettingIsVisible = !SettingIsVisible;
            }


            public KitchenerMainPageVm()
            {
                BaseUrl = Settings.BaseUrlBulletHttpServer;

                ShowHideSettings = new Command(_showHideSettings);
            }
    }

在调试组装模式下,一切正常,但一旦我在发布组装模式下收集所有这些工作,我的一些绑定和团队就会崩溃。

我在部署时看到的:

[0:] 绑定:“MessageTextVisible”属性未在 'Kitchener.ViewModels.KitchenerMainPageVm',目标属性: 'Xamarin.Forms.Label.IsVisible' [0:] 绑定:'MessageTextColor' 在“Kitchener.ViewModels .KitchenerMainPageVm”上找不到属性, 目标属性:'Xamarin.Forms.Label.TextColor'[0:] 绑定:' MessageText '找不到属性' Kitchener.ViewModels.KitchenerMainPageVm ',目标属性:' Xamarin.Forms.Label.Text '

有绑定SettingIsVisibleBaseUrlButtonStackVisible 其余的都不起作用,不管我做什么......同样的命令不起作用......

我已经重新组装了一百次,尝试在真实设备(Android 7.1)上运行它,在模拟器上,它没有帮助......

我使用VisualStudio 2017库程序集的参数http://joxi.ru/823kkB8FJNGa82Android项目:http://joxi.ru/5md77LnikRZ8xrSDK版本编译器8.1

【问题讨论】:

标签: xamarin.forms


【解决方案1】:

我发现了链接器中的问题。有两种解决方案:要么在这里完全禁用 joxi.ru/vAW339ei1vX6bA 或者使用属性 [Android.Runtime.Preserve (AllMembers = true)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2020-04-19
    • 2021-03-11
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多