2016-12-21 6 views
-1

Heyoのみんなへ/から私は今、私にそれが必要以上に気に私のプログラムに少し問題を抱えています。は保存方法/負荷のプロパティ</p> <p>、ビュー/シングルトンクラス

これは私のプログラムで使用しているシングルトンクラスです。

public class Resources 
{ 
    private static Resources _instance; 

    public static Resources Instance 
    { 
     get { return _instance ?? (_instance = new Resources()); } 
    } 

    #region Properties 

    public Candidate Candidate { get; set; } 
    public Enterprise Enterprise { get; set; } 
    public WikomContact WikomContact { get; set; } 
    public AMSContact AMSContact { get; set; } 

    #endregion 
} 

私はこれらの候補/エンタープライズ/...-オブジェクトをコンボボックスのアイテムソースとして使用していますが、これは非常にうまく動作します。 これらのオブジェクトを他のビューモデルでも使用するには、シングルトンクラスに保存したいので、そこから他のすべてのビューモデルにロードしたかったのです。

public _0InfoTalkViewModel() 
{ 
    _context = new WikomContext(); 
    RefreshViewCommand = new RelayCommand(RefreshView); 
    PrintViewCommand = new RelayCommand(PrintView); 
    SaveViewCommand = new RelayCommand(SaveView); 
    EnterpriseIsEnabled = false; 
    WikomContactIsEnabled = true; 

    Candidate = Resources.Instance.Candidate; 
    Enterprise = Resources.Instance.Enterprise; 
    WikomContact = Resources.Instance.WikomContact; 
} 

ここに私のプログラムで使用するコンボボックスの1つがあります。

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="170" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <Label Content="Enterprise" Margin="3" Foreground="White" Grid.Column="0"/> 
    <ComboBox ItemsSource="{Binding EnterpriseList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
           SelectedItem="{Binding Enterprise, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
           DisplayMemberPath="Name" 
           IsEditable="True" 
           IsEnabled="{Binding EnterpriseIsEnabled, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
           Margin="3" Grid.Column="1"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="SelectionChanged"> 
       <i:InvokeCommandAction Command="{Binding RefreshViewCommand, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </ComboBox> 
</Grid> 

SaveView-方法は、フォームがロードされるときRefreshView-方法もトリガーされます。この

public void SaveView() 
{ 
    Resources.Instance.Candidate = Candidate; 
    Resources.Instance.Enterprise = Enterprise; 
    Resources.Instance.WikomContact = WikomContact; 
} 

のように見えます。 問題は、コンボボックスがデータベースから適切な入力を得ることですが、それらの1つを選択してビューを変更して再度読み込むと、SelectedValueは前に入れたものではありません...

Does誰でも私が間違っていることを知っている?それとも誰かが私の「アイデア/方法」がなぜ機能しないのか教えてもらえますか?

申し訳ありませんが悪い英語、私は通常ドイツ語を話す! ;)

+0

私はしないでください:あなたは、あなたのシングルトンを参照すると

public Candidate Candidate { get; set; } public Enterprise Enterprise { get; set; } public WikomContact WikomContact { get; set; } public AMSContact AMSContact { get; set; } 

は、リソースは、それがインスタンスへの参照する必要があります:

あなたのプロパティは静的であってはならない、彼らは、インスタンスのプロパティでなければなりませんあなたは 'リソース'のシングルトンインスタンスを使用することは決してありません。静的なプロパティだけです。単に 'Resources'を静的にしないのはなぜですか? – Kjata30

+0

ああ、私は...シングルトンのことに精通していないので、私がここにいる理由;)今シングルトンのインスタンスに変更しましたが、まだ動作しません...これ以上のアイデアはありますか? – Snaylor

+0

'public static Resource Instance'はまったく必要ありません。 'Resource'を静的なクラスに宣言し、あなたのようにプロパティにアクセスします:例えば' Resource.Candidate'。 – Kjata30

答えて

0

Snaylor;

Candidate = Resources.Instance.Candidate; 
Resources.Instance.Candidate = Candidate; 
+0

ああ大丈夫ですよね、私はシングルトンにはあまり馴染んでいません...今はインスタンスに変更しましたが、それでも仕事はできません...もっとアイデア:o @Brahim Malluf – Snaylor

+0

Did私はコードであなたを示したように静的からインスタンスにあなたのプロパティを変更しますか? –

+0

遅く答えて申し訳ありません、あなたのポストを見たhavent、私はそう、まだ動作しません... – Snaylor

関連する問題