質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

4903閲覧

WPF でボタンを必要に応じ表示したり消したりしたい

byori

総合スコア72

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2020/11/06 00:24

必要に応じてボタンを表示させたいのですが、うまくいきません。
Xaml で下記のようにしています。初期設定で Hidden なので表示しないのですが、コード内で bPrintFlg = true とした後も表示してきません。
教えてください。

Windows10 VS2015 C# WPF

xaml

1 <Window.DataContext> 2 <vm:MainWindowViewModel/> 3 </Window.DataContext> 4 5 6 <Button Name="PrintButton" Content="印 刷" FontSize="18" Grid.Row="14" Grid.Column="8" Margin="10 2 20 20" 7 Background="Coral" Foreground="White" Click="PrintButton_Click"> 8 <Button.Style> 9 <Style TargetType="Button"> 10 <Setter Property="Visibility" Value="Hidden" /> 11 <Style.Triggers> 12 <DataTrigger Binding="{Binding bPrintFlg }" Value="true"> 13 <Setter Property="Visibility" Value="Visible" /> 14 </DataTrigger> 15 </Style.Triggers> 16 </Style> 17 </Button.Style> 18 </Button>

C#

1public class MainWindowViewModel : INotifyPropertyChanged 2{ 3 : 4 public bool bPrintFlg { get; set; } 5 6 7public partial class MainWindow : Window 8{ 9 public MainWindowViewModel Model 10 { 11 get { return DataContext as MainWindowViewModel; } 12 } 13 14 15必要なタイミングで、下記実施 16 Model.bPrintFlg = true;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ViewModel で bPrintFlg の変更時に、PropertyChanged イベントを発火してないからです。

C#

1public class MainWindowViewModel : INotifyPropertyChanged { 2 //public bool bPrintFlg { get; set; } 3 4 private bool _bPrintFlg; 5 public bool bPrintFlg { 6 get => this._bPrintFlg; 7 set { 8 if(this._bPrintFlg != value) { 9 this._bPrintFlg = value; 10 this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(bPrintFlg))); 11 } 12 } 13 } 14 15}

投稿2020/11/06 01:53

draq

総合スコア2577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

byori

2020/11/06 02:33

お世話になります。 > PropertyChanged イベントを発火してないからです すっかり忘れてました。 ありがとうございます。うまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問