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誰でも私が間違っていることを知っている?それとも誰かが私の「アイデア/方法」がなぜ機能しないのか教えてもらえますか?
申し訳ありませんが悪い英語、私は通常ドイツ語を話す! ;)
私はしないでください:あなたは、あなたのシングルトンを参照すると
は、リソースは、それがインスタンスへの参照する必要があります:
あなたのプロパティは静的であってはならない、彼らは、インスタンスのプロパティでなければなりませんあなたは 'リソース'のシングルトンインスタンスを使用することは決してありません。静的なプロパティだけです。単に 'Resources'を静的にしないのはなぜですか? – Kjata30
ああ、私は...シングルトンのことに精通していないので、私がここにいる理由;)今シングルトンのインスタンスに変更しましたが、まだ動作しません...これ以上のアイデアはありますか? – Snaylor
'public static Resource Instance'はまったく必要ありません。 'Resource'を静的なクラスに宣言し、あなたのようにプロパティにアクセスします:例えば' Resource.Candidate'。 – Kjata30