Xamarin 如何控制条目';禁用时的占位符文本颜色
我有两个条目。其中一个可用作输入,另一个可用作计算的输出。当其中一个获得输入值时,另一个被禁用,因此用户无法输入值。我的问题是,当条目被禁用时,占位符文本和文本都会变成深灰色。尽管已为禁用状态设置了文本和占位符颜色,但仍会出现这种情况。我尝试过各种各样的方法来设置颜色,但运气不好。它总是被覆盖。当条目被禁用时,我可以更改背景颜色,但文本不会更改 我尝试过使用自定义条目控件,并在IsEnabled属性更改时设置该属性。我还尝试了应用一种包含触发器的样式,并尝试在XAML中设置触发器,但没有任何效果 有什么建议吗Xamarin 如何控制条目';禁用时的占位符文本颜色,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我有两个条目。其中一个可用作输入,另一个可用作计算的输出。当其中一个获得输入值时,另一个被禁用,因此用户无法输入值。我的问题是,当条目被禁用时,占位符文本和文本都会变成深灰色。尽管已为禁用状态设置了文本和占位符颜色,但仍会出现这种情况。我尝试过各种各样的方法来设置颜色,但运气不好。它总是被覆盖。当条目被禁用时,我可以更改背景颜色,但文本不会更改 我尝试过使用自定义条目控件,并在IsEnabled属性更改时设置该属性。我还尝试了应用一种包含触发器的样式,并尝试在XAML中设置触发器,但没有任何效果
<Entry
HorizontalTextAlignment="Center"
Keyboard="Numeric"
Placeholder="0"
HorizontalOptions="FillAndExpand"
IsEnabled="{Binding MinuteEnabled}"
Text="{Binding MinuteString, Mode=TwoWay}">
<Entry.Triggers>
<Trigger TargetType="Entry"
Property="IsEnabled" Value="False">
<Setter Property="BackgroundColor" Value="Yellow" />
<Setter Property="PlaceholderColor" Value="Green" />
<Setter Property="TextColor" Value="Green" />
</Trigger>
</Entry.Triggers>
实际上这很难存档,但一个可行的解决方案是将一些entra隐藏标签绑定到输出 这里是一些示例代码,您可以将其存档以使用视图模型 XAML
您可以添加一个清除按钮来恢复条目和标签。实际上这很难存档,但一个可行的解决方案是将一些entra隐藏的标签绑定到您的输出 这里是一些示例代码,您可以将其存档以使用视图模型 XAML
您可以添加一个清除按钮来恢复条目和标签。Darn,我担心这是表单限制。谢谢。@Sevren您的自定义渲染不起作用吗?你是如何实现的?该死,我担心这是表单的限制。谢谢。@Sevren你的自定义渲染不起作用吗?你如何实现它?
<Label x:Name="Output1"
TextColor="Green"
BackgroundColor="Yellow"
HorizontalOptions="FillAndExpand"
FontSize="Medium"
HeightRequest="35"
IsVisible="False" />
<Entry x:Name="entry1"
Keyboard="Numeric"
Placeholder="0"
HorizontalOptions="FillAndExpand"/>
<Entry x:Name="entry2"
Keyboard="Numeric"
Placeholder="0"
HorizontalOptions="FillAndExpand"/>
<Label x:Name="Output2"
TextColor="Green"
BackgroundColor="Yellow"
HorizontalOptions="FillAndExpand"
FontSize="Medium"
HeightRequest="35"
IsVisible="False" />
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
entry1.Completed += (s, e) =>
{
// All your logic here or do it on view model
entry2.IsVisible = false;
Output2.IsVisible = true;
Output2.Text = entry1.Text;
};
entry2.Completed += (s, e) =>
{
// All your logic here or do it on view model
entry1.IsVisible = false;
Output1.IsVisible = true;
Output1.Text = entry2.Text;
};
}
}