xamarin.forms - 未找到发布属性中的 Xamarin.Forms 绑定
问题描述
让我发疯的问题)人们帮助(
有一个简单的 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:] 绑定:'Kitchener.ViewModels.KitchenerMainPageVm' 上找不到'MessageTextVisible' 属性,目标属性:'Xamarin.Forms.Label.IsVisible' [0:] 绑定:'Kitchener.ViewModels 上找不到'MessageTextColor' 属性.KitchenerMainPageVm',目标属性:'Xamarin.Forms.Label.TextColor'[0:] 绑定:'MessageText'在'Kitchener.ViewModels.KitchenerMainPageVm'上找不到属性,目标属性:'Xamarin.Forms.Label.Text'
有绑定SettingIsVisible
,,其余的不起作用BaseUrl
,ButtonStackVisible
无论我做什么......并且相同的命令不起作用......
我已经重新组装了一百次,试图在真实设备(Android 7.1)上运行它,在模拟器上,它没有帮助......
我使用VisualStudio 2017 库程序集的参数http://joxi.ru/823kkB8FJNGa82 Android项目: http: //joxi.ru/5md77LnikRZ8xr SDK版本编译器8.1
解决方案
我在链接器中发现了问题。有两种解决方案:要么在此处完全禁用 joxi.ru/vAW339ei1vX6bA,要么使用属性 [Android.Runtime.Preserve (AllMembers = true)]
推荐阅读
- java - 如何在没有类的情况下使用另一个类的方法
- spring - 为什么 Spring JPA / Hibernate 在更新时返回 0?
- ansible - Ansible - 用户输入
- html - 使用 css 定位元素
- android - 找不到属性“android:text”的设置器 - Android MVVM
- algorithm - QuickSort 分区枢轴异常
- redis - Redis - 一个请求中具有多个弹出的可靠队列模式
- php - Google drive API 不允许在未经 PHP 身份验证的情况下上传文件
- excel - VBA为什么if函数不按特定短语过滤我的数据
- python - 如果出错,返回同一窗口 Python Tkinter 2.7