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

WPF中C#修改MaterialDesign按钮IsIndeterminate属性方法

问题原因

materialDesign:ButtonProgressAssist.IsIndeterminate属于WPF的附加属性,不属于Button控件自带的原生CLR属性,因此无法参照Content这类常规属性的直接赋值方式操作,你之前写的BTN_Search.materialDesign:ButtonProgressAssist.IsIndeterminate = true;本身就不符合C#语法规则,自然无法生效。

正确实现代码

首先确保后台代码文件已经引入MaterialDesign对应命名空间:

using MaterialDesignThemes.Wpf;

附加属性在C#后台的操作必须通过属性所属类提供的静态Set[属性名]/Get[属性名]方法完成,按钮点击事件的参考实现如下:

private async void Search_Click(object sender, RoutedEventArgs e)
{
    // 开启按钮加载状态
    ButtonProgressAssist.SetIsIndeterminate(BTN_Search, true);
    try
    {
        // 此处编写实际搜索业务逻辑,耗时操作必须用异步调用,避免阻塞UI线程导致动画不显示
        // 示例:await Task.Run(() => { /* 你的耗时查询逻辑 */ });
    }
    finally
    {
        // 业务执行完成后无论成功失败,都关闭加载状态
        ButtonProgressAssist.SetIsIndeterminate(BTN_Search, false);
    }
}
注意事项
  • 所有XAML中以宿主类名:属性名格式书写的属性都是附加属性,后台操作统一遵循宿主类.Set属性名(目标控件实例, 属性值)的赋值规则、宿主类.Get属性名(目标控件实例)的取值规则,不能直接通过控件实例点属性名赋值。
  • 耗时业务逻辑不要直接写在UI线程同步执行,否则会阻塞UI渲染,即使正确设置了属性,加载动画也无法正常显示,必须配合async/await做异步处理。

内容的提问来源于stack exchange,提问作者Pawel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:06:18