You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:13:23