【发布时间】: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 '
有绑定SettingIsVisible、BaseUrl、ButtonStackVisible 其余的都不起作用,不管我做什么......同样的命令不起作用......
我已经重新组装了一百次,尝试在真实设备(Android 7.1)上运行它,在模拟器上,它没有帮助......
我使用VisualStudio 2017库程序集的参数http://joxi.ru/823kkB8FJNGa82Android项目:http://joxi.ru/5md77LnikRZ8xrSDK版本编译器8.1
【问题讨论】:
-
检查您的链接器设置 - 比较发布和调试
-
我在这里没有看到任何显着差异......
-
确保您查看的是平台项目上的链接器设置,而不是库
标签: xamarin.forms