【发布时间】:2022-01-22 22:26:19
【问题描述】:
在使用数据绑定时,我遇到了单选按钮不会在视觉上更新但值正确的问题。我有一个 RadiobuttonGroup.GroupName 和一个 RadioButtonGroup.SelectedValue。 SelectedValue 通过 {Binding Selection} 将数据绑定到我的 ViewModel。选择也在我的 ViewModel 中声明。
每当我将 RadioButton 的选择更改为未选择的按钮时,OnPropertyChanged();三次熄灭。 (我想这是由于视图中有三个按钮,这里可能是错误的。)导致值被选中并被移交给我的数据绑定选择。但是按钮的视觉状态不会改变。单选按钮位于 SfPopupLayout 弹出窗口中。弹出窗口第一次初始化并在视图中提供时,它总是按预期工作。但是随着随后的每一次服务,它在视觉上都会出错。导致必须多次单击单选按钮才能更改视觉状态。
实际上并没有发生太多事情,只是选择存储在我的 ViewModel 中。我已经检查了 GitHub 上有关 RadioButtons 和数据绑定的 Xamarin-Examples-Demos,但我无法重现我在演示中遇到的相同问题。
XAML 代码 sn-p;
<StackLayout HeightRequest="160"
Grid.Row="2"
RadioButtonGroup.GroupName="WeekSelection"
RadioButtonGroup.SelectedValue="{Binding Selection}">
<RadioButton Padding="5"
BackgroundColor="{DynamicResource BlockBackgroundColor}"
Content="{markup:Translate Week_Selection}"
Value="{markup:Translate Week_Selection}"/>
<BoxView Style="{StaticResource SeperatorLineStyle}"/>
<RadioButton Padding="5"
BackgroundColor="{DynamicResource BlockBackgroundColor}"
Content="{markup:Translate TwoWeek_Selection}"
Value="{markup:Translate TwoWeek_Selection}"/>
<BoxView Style="{StaticResource SeperatorLineStyle}"/>
<RadioButton Padding="5"
BackgroundColor="{DynamicResource BlockBackgroundColor}"
Content="{markup:Translate Month_Selection}"
Value="{markup:Translate Month_Selection}"/>
<BoxView Style="{StaticResource SeperatorLineStyle}"/>
</StackLayout>
更新:似乎它与切换视图有关。每当我转到我的设置页面来更改单选按钮的选择时,OnPropertyChanged();只被解雇一次。但是每当我关闭视图并返回它时,它就会将其关闭两次。随后随着每次切换,它会增加 OnPropertyChanged(); 的次数。叫做。值仍然正常工作,只是视觉状态没有更新。
更新 2:我很确定它与生成的包含单选按钮的弹出窗口有关。这是初始化带有单选按钮的弹出窗口的代码;
public void ShowAmountOfWeeksPopup()
{
_selectWeeksToViewPopupControl = new SelectWeeksToViewPopupControl(this);
_selectWeeksToViewPopupControl.Show();
}
public void DismissAmountOfWeeksPopup()
{
_selectWeeksToViewPopupControl.Dismiss();
}
【问题讨论】:
标签: c# xaml xamarin mvvm viewmodel