Xamarin应用资源中能否通过Binding为Style的Setter赋值?
在Xamarin的Application.Resources样式中,能否通过Binding为Setter赋值?
问题场景
开发Xamarin应用时,我在App.xaml的Application.Resources中集中定义控件属性与样式,想要创建一个能根据运行设备(手机/平板)动态设置Label的FontSize属性的Style。为此我创建了AppModel、AppViewModel,并给App类设置了BindingContext,但发现Style的Setter无法通过Binding获取对应值,只有静态值能正常生效。
核心结论
Xamarin里,Application.Resources中的Style的Setter不能直接通过Binding赋值。原因在于Style属于全局资源字典的一部分,它的上下文与页面、控件的BindingContext相互独立,无法直接绑定到ViewModel的属性。
可行解决方案
可以使用Xamarin内置的OnIdiom语法直接在Style的Setter中根据设备类型设置属性值,无需借助Binding,示例代码如下:
<Style x:Key="DynamicOnDeviceLabelStyle" TargetType="Label" > <Setter Property="FontSize" Value="{OnIdiom Phone=Small, Tablet=Medium}" /> </Style>
内容的提问来源于stack exchange,提问作者Gabo77
相关产品推荐
相关产品推荐

