0

ユーザーがメートル単位と帝国単位を切り替えることができるように、「mm」と「インチ」の単位選択ラジオボタンを作成しました。設定ファイルの列挙型に関連付けられた 2 つのラジオ ボタン バインドがあります。私はこれを参考にしましたが、うまくいきました。 ラジオボタンの選択を設定に保存します

ここで、メトリックまたはインペリアルのユーザー設定を反映するために、測定値を持つすべてのプロパティを更新する必要があります。これは、起動時に単位がメートル法に設定されていると言っていますが、彼らは帝国で何をしているのかを見たいと思っています。ユーザーは帝国のラジオ ボタンを選択して帝国の測定値を表示し、ラジオ ボタン「インチ」をクリックするとすべてのデータが更新され、表示は帝国の測定値で表示されますが、ラジオでプロパティを変更するにはどうすればよいですか設定ファイルの列挙型に関連付けられたボタン? それとも別の方法があれば?

メトリックまたはインペリアルの設定を保存する必要がない場合は、ラジオ ボタンごとにブール値に切り替え、notify プロパティの変更を使用します。

編集 それを理解しました。回答として投稿しました。

4

2 に答える 2

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 を基本クラスとして通知クラスに追加する必要があることもわかりました。

次に、ユーザーが mm とインチを切り替えたときの処理を追加する必要があります。

于 2012-10-02T19:40:38.373 に答える
0

列挙型にバインドする必要があることがわかりました

まだまだ告知は必要だと思います。

INotifyPropertyChanged を実装する必要があります

INotifyPropertyChanged

NotifyPropertyChanged();

全員に通知します

于 2012-10-01T22:18:57.113 に答える