私はVS 2015でWPFアプリケーションをプログラミングしています。 私のウィンドウには、FontWeights.BoldとFontWeights.Normalを切り替えるためのTextBoxとToggleButtonがあります。 私のViewModelには2つのプロパティがあります。 1つはToggleButtonのIsCheckedプロパティ用で、もう1つはTextBoxのFontWeight用です。依存プロパティのRaisePropertyChangedは一度だけ呼び出されます
/// <summary>
/// Gets or sets if the button setFontBold is checked.
/// </summary>
private bool? setFontBoldIsChecked = false;
public bool? SetFontBoldIsChecked
{
get { return setFontBoldIsChecked; }
set
{
setFontBoldIsChecked = value;
RaisePropertyChanged("SetFontBoldIsChecked");
RaisePropertyChanged("TextFontWeight");
}
}
/// <summary>
/// Gets the fontweight depending on SetFontBoldIsChecked.
/// </summary>
public FontWeight TextFontWeight
{
get { return (setFontBoldIsChecked == true) ? FontWeights.Bold : FontWeights.Normal; }
}
のTextBoxのfontWeightが、プロパティがそのようにバインドされている:
<TextBox x:Name="textbox1" FontWeight="{Binding TextFontWeight}"/>
そして、トグルボタンのにisChecked-プロパティがSetFontBoldIsCheckedにバインドされています
<ToggleButton x:Name="setFontBold" IsChecked="{Binding SetFontBoldIsChecked}"/>
私が起動すると、トグルボタンをクリックすると、IsEnabledがtrueになり、テキストが太字で表示されます。 しかし、もう一度試してみると、RaisePropertyChanged( "TextFontWeight")ではTextFontWeightのGetterが呼び出されません。
どうしてですか?
ありがとうございます! パトリック
それは私のために働く。あなたが私たちに示していないものがなければなりません。 – Clemens
多分問題は次のようなものです: ツールボックスからドラッグ&ドロップコントロール(Labelのような)を持つMainWindowを持っています。 ドロップ後、ToggleButtonとTextBox(プレビュー用)を含むプロパティ設定ウィンドウが開きます。 プロパティを調整してTextBoxで結果を確認した後、私はそれを確認し、ウィンドウは閉じずに非表示コマンドで非表示にします。 ウィンドウを隠す前に、ViewModelのすべてのプロパティをデフォルト値にリセットします。 これは、SetFontBoldIsChecked = falseを意味します。 次のコントロールをドロップすると、設定ウィンドウが再度表示され、RaiseはTextFontWeightのGetterを起動しません。 –