OS:Windows11Pro
開発環境:VisualStudio2022
使用言語:C#
MainのViewとSubのView2つで同じ1つのViewModelをDataContextに持ち
MainのViewに配置したComboBoxでViewModelのSubVisibilityを経由してSubのViewのVisibilityを切り替える
以下のようなプログラムを書いています
App.xaml
xaml
1<Application x:Class="WpfApp1.App" 2 ... 3 Startup="Application_Startup"> 4 <Application.Resources> 5 </Application.Resources> 6</Application>
App.xaml.cs
c#
1... 2namespace WpfApp1 3{ 4 public partial class App : Application 5 { 6 private void Application_Startup(object sender, StartupEventArgs e) 7 { 8 var mainwindow = new MainWindow(); 9 var subwindow = new SubWindow(); 10 var viewmodel = new ViewModel(); 11 12 mainwindow.DataContext = viewmodel; 13 subwindow.DataContext = viewmodel; 14 15 mainwindow.Show(); 16 subwindow.Show(); 17 } 18 } 19}
MainWindow.xaml
xaml
1<Window x:Class="WpfApp1.MainWindow" 2 ... 3 Title="MainWindow" Height="450" Width="800"> 4 <Grid> 5 <ComboBox ItemsSource="{Binding VisibilityItems}" SelectedItem="{Binding SubVisibility}"/> 6 </Grid> 7</Window>
SubWindow.xaml
xaml
1<Window x:Class="WpfApp1.SubWindow" 2 ... 3 Title="SubWindow" Height="450" Width="800" Visibility="{Binding SubVisibility}"> 4 <Grid> 5 <TextBlock Text="{Binding SubVisibility}"/> 6 </Grid> 7</Window>
ViewModel.cs
c#
1... 2namespace WpfApp1 3{ 4 internal class ViewModel : INotifyPropertyChanged 5 { 6 public event PropertyChangedEventHandler PropertyChanged; 7 public void RaisePropertyChanged(string propertyName) 8 { 9 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 10 } 11 12 public Visibility[] VisibilityItems { get=>new Visibility[] { Visibility.Visible, Visibility.Hidden }; } 13 14 private Visibility _subVisibility = Visibility.Visible; 15 public Visibility SubVisibility 16 { 17 get { return _subVisibility; } 18 set { _subVisibility = value; RaisePropertyChanged(nameof(SubVisibility)); } 19 } 20 } 21} 22
しかしなぜかMainのViewのComboBoxを切り替えてもSubのViewのVisibilityが切り替わりません
試しにSubのViewにSubVisibilityの内容を表示してみましたが、そちらは正しく切り替わっています、なぜかSubWindow.Visibilityだけが切り替わりません
これはなぜなのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/14 09:12
2023/03/14 09:26
2023/03/14 09:26