プログラミング初心者です。
Visual Studio 2019 CommunityでWPFアプリ(.NET Core)をC#で作ろうとしています。
MainWindow.xamlに記述したbutton1のbutton1.IsMouseOverを
Page1.xaml.csから参照するにはどのようにすればいいでしょうか?
よろしくお願いいたします・・・。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
MainWindow.xamlに記述したbutton1のbutton1.IsMouseOverを
Page1.xaml.csから参照するにはどのようにすればいいでしょうか?
x:Name
を付けた要素は、既定ではinternalフィールドになります。
x:Name ディレクティブ - XAML | Microsoft Learn
なのでMainWindow
のインスタンスを取得できれば、(Page1
が同一アセンブリ内であれば)普通にアクセス可能です。
Application.Current Property (System.Windows) | Microsoft Learn
Application.MainWindow Property (System.Windows) | Microsoft Learn
Window.GetWindow(DependencyObject) Method (System.Windows) | Microsoft Learn
xml:MainWindow.xaml
1<Window 2 x:Class="Qlidjivyg7mcliv.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="clr-namespace:Qlidjivyg7mcliv" 6 Title="MainWindow" 7 Width="400" 8 Height="300"> 9 <Grid> 10 <Button x:Name="button1" VerticalAlignment="Top" Content="Buttin" /> 11 <Frame HorizontalAlignment="Center" VerticalAlignment="Center" Source="Page1.xaml" /> 12 </Grid> 13</Window>
xml:Page1.xaml
1<Page 2 x:Class="Qlidjivyg7mcliv.Page1" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Width="300" 6 Height="100"> 7 <StackPanel Background="Pink"> 8 <TextBlock Text="Page1" /> 9 <TextBlock x:Name="textBlock1" /> 10 </StackPanel> 11</Page>
cs:Page1.xaml.cs
1using System.Windows; 2using System.Windows.Controls; 3using System.Windows.Threading; 4 5namespace Qlidjivyg7mcliv; 6 7public partial class Page1 : Page 8{ 9 private readonly DispatcherTimer timer; 10 11 public Page1() 12 { 13 InitializeComponent(); 14 timer = new() { Interval = TimeSpan.FromMilliseconds(100), }; 15 timer.Tick += Timer_Tick; 16 timer.Start(); 17 } 18 19 private void Timer_Tick(object? sender, EventArgs e) 20 { 21 var w = (MainWindow)Application.Current.MainWindow; 22 //var w = (MainWindow)Window.GetWindow(this); 23 24 textBlock1.Text = $"button1.IsMouseOver: {w.button1.IsMouseOver}"; 25 } 26}
投稿2024/10/01 11:17
総合スコア9855
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/10/01 12:17