如何在View的代码后置文件中为控件绑定样式?
在C#代码后置文件中绑定XAML定义的样式
你已经在XAML的页面资源中定义了两个Button样式:
<ContentPage.Resources> <Style x:Key="choosenButton" TargetType="Button"> <Setter Property="Shadow" Value="10" /> <Setter Property="FontAttributes" Value="None" /> </Style> <Style x:Key="nonChoosenButton" TargetType="Button"> <Setter Property="Shadow" Value="0" /> <Setter Property="FontAttributes" Value="Bold" /> </Style> </ContentPage.Resources>
要在C#代码后置中根据逻辑给按钮设置这些样式,不能直接用XAML的绑定字符串语法,而是需要从页面的资源字典中直接获取Style实例,再赋值给按钮的Style属性。修改你的SetUpView方法如下:
private void SetUpView() { // 提前获取两个样式实例,减少重复检索 var choosenStyle = Resources["choosenButton"] as Style; var nonChoosenStyle = Resources["nonChoosenButton"] as Style; switch (_calendarView) { case CalendarEnums.CurrentCalendarView.Liste: MyButton.Style = choosenStyle; SecondButton.Style = nonChoosenStyle; break; case CalendarEnums.CurrentCalendarView.Monat: MyButton.Style = nonChoosenStyle; SecondButton.Style = choosenStyle; break; } }
补充说明
- 页面中定义的样式会自动存入
Resources字典,通过样式的x:Key即可检索到对应的Style对象。 - 使用
as Style做类型转换可以避免键不存在或类型不匹配时抛出异常(此时结果为null,按钮会使用默认样式)。 - 如果需要更安全的检索方式,可以用
Resources.TryGetValue:if (Resources.TryGetValue("choosenButton", out object styleObj) && styleObj is Style choosenStyle) { MyButton.Style = choosenStyle; }
内容的提问来源于stack exchange,提问作者Frank Mehlhop
相关产品推荐
相关产品推荐

