xamarin - Xamarin 表单样式类绑定
问题描述
我希望能够通过等效的 , 来更改元素
的StyleClassIsParentSelect ? "Selected" : ""
,以使用 CSS 更改按钮外观。所以,我做了一个转换器来为我做这件事。
但是,我一直很头疼,试图弄清楚为什么 Binding 不适用于StyleClass属性,因为它确实适用于属性Text。
在 StyleClass 属性上使用绑定时,我在 LightLambda 类中收到 NullPointerException。
任何人都知道为什么我会收到此异常?
非常感谢!
资源
<ContentPage.Resources>
<StyleSheet Source="../Styles/Styles.css" />
<ResourceDictionary>
<converters:BoolConverter x:Key="boolConverter" />
</ResourceDictionary>
</ContentPage.Resources>
绑定:
<Button StyleClass="{Binding IsParentSelected, Converter={StaticResource boolConverter}, ConverterParameter=Selected}" />
视图模型
public class IdentificationViewModel : BaseViewModel
{
public IdentificationViewModel()
{
Title = "Identification";
IsParentSelected = true;
}
bool isParentSelected = false;
public bool IsParentSelected
{
get { return isParentSelected; }
set { SetProperty(ref isParentSelected, value); }
}
}
转换器
public class BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = ((string)parameter).Split(':');
if ((bool)value)
return s[0].Trim();
if (s.Length > 1)
return s[1].Trim();
return String.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = ((string)parameter).Split(':');
return (string)value == s[0].Trim();
}
}
解决方案
推荐阅读
- c# - 在C#中自动添加多个文本框而没有按钮
- python - 无法通过 pip 或 npm 安装软件包
- javascript - 有没有办法将 JavaScript 函数调用答案传递给要在同一页面中使用的 PHP 变量?
- python-3.x - 在破折号的条形图中删除高度为 0 的条形
- api - Qliksense REST 连接器错误:BAD_AUTH_CODE
- angular - node_modules/xterm/typings/xterm.d.ts(10,1) 中的错误:错误 TS1084:无效的“参考”指令语法
- sql - sql server 选择组的第一行
- angular - 如何从浏览器访问网络选项卡中的请求标头部分
- ansible - 有没有办法将完整的 Ansible 剧本(而不仅仅是任务)委托给另一个主机?
- javascript - 通过对象属性实现条件逻辑