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

WinUI 3中RatingControl设为0星失败,显示1星该如何解决?

RatingControl设置为0星却显示1星的原因及解决方法

你遇到的问题是:点击「清除评分」按钮后,明明把mainRating.Value设为了0.0,但UI里的RatingControl始终显示1星,核心原因是事件触发顺序和未对0值做判断:

当你设置mainRating.Value = 0.0时,会立刻触发ValueChanged事件,而你的事件处理代码不管当前评分是多少,直接把清除按钮设为Visible。再加上RatingControl开启了IsClearEnabled="True",设置0值时控件内部逻辑会和事件触发产生冲突,最终导致评分被意外重置为1星。

你的现有代码

XAML代码

<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="4">
    <RatingControl x:Name="mainRating" Margin="5, 10, 10, 0" HorizontalAlignment="Left" VerticalAlignment="Center" VerticalContentAlignment="Center" AutomationProperties.Name="Simple RatingControl" IsClearEnabled="True" IsReadOnly="False" ValueChanged="MainRating_ValueChanged" />
    <Button x:Name="clearRatingButton" Content="Clear Rating" Click="ClearRatingButton_Click" Visibility="Collapsed" />
</StackPanel>

后台代码

private void ClearRatingButton_Click(object sender, RoutedEventArgs e)
{
    mainRating.Value = 0.0;
    clearRatingButton.Visibility = Visibility.Collapsed;
}

private void MainRating_ValueChanged(RatingControl sender, object args)
{
    clearRatingButton.Visibility = Visibility.Visible;
}

两种解决方法

方法一:在ValueChanged事件中判断评分值

修改ValueChanged事件处理代码,只有当评分大于0时才显示清除按钮,这样设置0值时按钮会自动隐藏,同时避免控件内部逻辑冲突:

private void MainRating_ValueChanged(RatingControl sender, object args)
{
    // 只有评分大于0时才显示清除按钮
    clearRatingButton.Visibility = sender.Value > 0 ? Visibility.Visible : Visibility.Collapsed;
}

方法二:设置Value时临时取消事件订阅

在清除评分时,先移除ValueChanged事件订阅,设置完0值后再重新订阅,避免事件触发干扰设置操作:

private void ClearRatingButton_Click(object sender, RoutedEventArgs e)
{
    // 临时移除事件订阅
    mainRating.ValueChanged -= MainRating_ValueChanged;
    mainRating.Value = 0.0;
    clearRatingButton.Visibility = Visibility.Collapsed;
    // 重新订阅事件
    mainRating.ValueChanged += MainRating_ValueChanged;
}

两种方法都能解决你的问题,推荐用方法一,逻辑更清晰,也更符合控件的交互逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:13:16