0

我制作了一个单位选择器单选按钮“mm”和“inches”,以允许用户在公制和英制单位之间切换。我有两个单选按钮绑定到设置文件中的枚举。我以此为参考,效果很好。 在设置中存储单选按钮选择

我现在需要刷新我的所有属性,包括我的测量值,以反映用户对公制或英制的偏好。那是在启动时说单位设置为公制,但他们想看看它们是英制的。用户选择英制单选按钮以显示英制尺寸,当他们单击单选按钮“英寸”时,所有数据将刷新,并且显示将以英制尺寸显示,但是如何在收音机上更改属性按钮绑定到设置文件中的枚举?或者如果有不同的方法?

如果我不需要存储他们对公制或英制的偏好,我会根据单选按钮切换到布尔值,并使用更改的通知属性。

编辑 想通了。我将其发布为答案。

4

2 回答 2

0

我看到你需要绑定到一个枚举

我认为您仍然需要通知。

您必须实施 INotifyPropertyChanged

INotifyPropertyChanged

NotifyPropertyChanged();

会通知所有人

于 2012-10-01T22:18:57.113 回答
0

所以当我试图让我的代码的不同部分工作时,我想通了。

我原来的单选按钮看起来像这样。

<!--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 作为基类添加到我的通知类中。

现在,当用户在毫米和英寸之间切换时,我必须完成并添加处理。

于 2012-10-02T19:40:38.373 回答