我制作了一个单位选择器radiobutton,“mm”和“inches”,以允许用户在公制和英制单位之间切换。我有两个单选按钮绑定绑定到设置文件中的枚举。我用这个作为参考,这很好用。 Storing a radio button selection in the settings。
我现在需要刷新所有具有测量结果的属性,以反映用户对公制或英制的偏好。这是在启动时说单位设置为公制,但他们希望看到它们在帝国中的含义。用户选择英制单选按钮以显示英制测量值,所有数据将在单击单选按钮“英寸”时刷新,显示屏将显示在英制测量中,但如何在设置文件中绑定到枚举的单选按钮上更改属性?或者,如果有不同的方式?
如果我不需要存储他们的公制或英制的偏好,我会切换到bool,每个单选按钮,并使用通知属性更改。
修改 弄清楚了。我发布了它作为答案。
答案 0 :(得分:0)
我发现你需要绑定到枚举
我认为你仍然需要通知。
您必须实施INotifyPropertyChanged
NotifyPropertyChanged();
将通知所有
答案 1 :(得分:0)
所以当我试图让我的代码的不同部分工作时,我想通了。
我原来的radiobuttons看起来像这样。
<!--Unit Selector-->
<ribbon:RibbonGroup x:Name="Unit_Selection" Header="Units">
<StackPanel DataContext="{StaticResource Settings}">
<!--Metric-->
<RadioButton GroupName="UnitsSelector" Content="mm" x:Name="Metric" IsChecked="{Binding Path=Default.Units, Mode=TwoWay, Converter={StaticResource enumBooleanConverter},
ConverterParameter=mm}" />
<!--Imperial-->
<RadioButton GroupName="UnitsSelector" Content="inches" x:Name="Imperial" IsChecked="{Binding Path=Default.Units, Mode=TwoWay, Converter={StaticResource enumBooleanConverter},
ConverterParameter=inches}" />
</StackPanel>
</ribbon:RibbonGroup>
将绑定指向用户设置枚举。
我将绑定更改为属性。获取xaml代码
<ribbon:RibbonGroup x:Name="Unit_Selection" Header="Units">
<StackPanel>
<RadioButton IsChecked="{Binding Path=UnitProperty, Converter={StaticResource enumBooleanConverter}, ConverterParameter=mm}">mm</RadioButton>
<RadioButton IsChecked="{Binding Path=UnitProperty, Converter={StaticResource enumBooleanConverter}, ConverterParameter=inches}">inches</RadioButton>
</StackPanel>
</ribbon:RibbonGroup>
...和财产
public Unit UnitProperty
{
get
{
return Properties.Settings.Default.Units;
}
set
{
if (Properties.Settings.Default.Units != value)
{
Properties.Settings.Default.Units = value;
NotifyPropertyChanged("UnitProperty");
NotifyPropertyChanged(String.Empty);
}
}
}
我不得不添加NotifyPropertyChange(String.Empty);让它来更新我的其他属性。
我还发现我需要将INotifyPropertyChanged作为基类添加到我的通知类中。
现在我必须通过并在用户在mm和英寸之间切换时添加处理。