teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

見直しキャンペーン中

2023/07/22 09:24

投稿

TN8001
TN8001

スコア10108

answer CHANGED
@@ -1,48 +1,48 @@
1
- ```xaml
1
+ ```xml
2
- <TextBox Text="{Binding Contents, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
2
+ <TextBox Text="{Binding Contents, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
3
- ```
3
+ ```
4
- これで十分なら話は早いです。これだけで機能します。
4
+ これで十分なら話は早いです。これだけで機能します。
5
-
5
+
6
- ---
6
+ ---
7
-
7
+
8
- `PropertyChanged`にできない(したくない)場合は、タブの切り替え時に`TextBox`の`LostFocus`が呼ばれないようなので、無理やり呼ぶような感じでしょうか。
8
+ `PropertyChanged`にできない(したくない)場合は、タブの切り替え時に`TextBox`の`LostFocus`が呼ばれないようなので、無理やり呼ぶような感じでしょうか。
9
-
9
+
10
- ```C#
10
+ ```cs
11
- using System.Collections.ObjectModel;
11
+ using System.Collections.ObjectModel;
12
- using System.ComponentModel;
12
+ using System.ComponentModel;
13
- using System.Windows;
13
+ using System.Windows;
14
- using System.Windows.Controls;
14
+ using System.Windows.Controls;
15
- using System.Windows.Input;
15
+ using System.Windows.Input;
16
-
16
+
17
- namespace Questions279056
17
+ namespace Questions279056
18
- {
18
+ {
19
- public partial class MainWindow : Window
19
+ public partial class MainWindow : Window
20
- {
20
+ {
21
- public ObservableCollection<TabItem> Tabs { get; set; } = new ObservableCollection<TabItem>();
21
+ public ObservableCollection<TabItem> Tabs { get; set; } = new ObservableCollection<TabItem>();
22
- public MainWindow()
22
+ public MainWindow()
23
- {
23
+ {
24
- InitializeComponent();
24
+ InitializeComponent();
25
- DataContext = Tabs;
25
+ DataContext = Tabs;
26
- Tabs.Add(new TabItem { Header = "Tab1", Contents = "aaa" });
26
+ Tabs.Add(new TabItem { Header = "Tab1", Contents = "aaa" });
27
- Tabs.Add(new TabItem { Header = "Tab2", Contents = "bbb" });
27
+ Tabs.Add(new TabItem { Header = "Tab2", Contents = "bbb" });
28
- Tabs.Add(new TabItem { Header = "Tab3", Contents = "ccc" });
28
+ Tabs.Add(new TabItem { Header = "Tab3", Contents = "ccc" });
29
-
29
+
30
- Tab.IsSynchronizedWithCurrentItem = true;
30
+ Tab.IsSynchronizedWithCurrentItem = true;
31
- Tab.Items.CurrentChanging += Items_CurrentChanging;
31
+ Tab.Items.CurrentChanging += Items_CurrentChanging;
32
- }
32
+ }
33
-
33
+
34
- private void Items_CurrentChanging(object sender, CurrentChangingEventArgs e)
34
+ private void Items_CurrentChanging(object sender, CurrentChangingEventArgs e)
35
- {
35
+ {
36
- if(Keyboard.FocusedElement is TextBox textBox)
36
+ if(Keyboard.FocusedElement is TextBox textBox)
37
- textBox.RaiseEvent(new RoutedEventArgs(LostFocusEvent));
37
+ textBox.RaiseEvent(new RoutedEventArgs(LostFocusEvent));
38
- }
38
+ }
39
- }
39
+ }
40
-
40
+
41
- public class TabItem
41
+ public class TabItem
42
- {
42
+ {
43
- public string Header { get; set; }
43
+ public string Header { get; set; }
44
- public string Contents { get; set; }
44
+ public string Contents { get; set; }
45
- }
45
+ }
46
- }
46
+ }
47
- ```
47
+ ```
48
48
  (もうちょっとましな方法がある気がする^^;