前提・実現したいこと
ImageのコントロールをVisible、Hiddenで切り替えて表示してます。
大量のImageを切り替えたいと思っているのですが
If文で毎回実行していくのも違うと思い、いい方法がないか調べてます。
発生している問題・エラーメッセージ
・Imageコントロールを総当たりする方法が分からない
・Imageコントロールのx:Nameの値で比較して操作したい
(特定名のイメージを操作したい)
該当のソースコード
現状は、ボタンを押すとImage1が表示され、
ボタン2を押すとImage2が表示されます。
xaml
1<Window x:Class="WpfApp3.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:WpfApp3" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid> 10 <Image x:Name="Image1" Source="pic/1.png" Visibility="Hidden" /> 11 <Image x:Name="Image2" Source="pic/2.png" Visibility="Hidden" /> 12 <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Click="Button_Click"/> 13 <Button Content="Button2" HorizontalAlignment="Left" Margin="75,0,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click2"/> 14 </Grid> 15</Window> 16
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows; 7using System.Windows.Controls; 8using System.Windows.Data; 9using System.Windows.Documents; 10using System.Windows.Input; 11using System.Windows.Media; 12using System.Windows.Media.Imaging; 13using System.Windows.Navigation; 14using System.Windows.Shapes; 15 16namespace WpfApp3 17{ 18 /// <summary> 19 /// MainWindow.xaml の相互作用ロジック 20 /// </summary> 21 public partial class MainWindow : Window 22 { 23 public MainWindow() 24 { 25 InitializeComponent(); 26 } 27 28 private void Button_Click(object sender, RoutedEventArgs e) 29 { 30 Image1.Visibility = Visibility.Visible; 31 Image2.Visibility = Visibility.Hidden; 32 } 33 34 private void Button_Click2(object sender, RoutedEventArgs e) 35 { 36 Image1.Visibility = Visibility.Hidden; 37 Image2.Visibility = Visibility.Visible; 38 } 39 } 40} 41
試したこと
C#
1this.Controls["label1"].Text = "HIRO";
上記と同じように
this.Controls["Image1"].Visibility = Visibility.Visible;
としてみましたが、Controlsが定義に含まれていないと
エラーが出て上手くいきませんでした。
C#
1 foreach (var child in MyGrid.Children) 2 { 3 if (child.Name == "Image1") { 4 5 } 6 //do something with child 7 }
Gridに「x:Name="MyGrid"」と名前を付け、Childernとすることで
Imageのコントロールが取得出来ているような気がしますが、操作方法が分かりません。
お手数をおかけしますが、回答のほどよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Windows10
VisualStudio2019
.NET4.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/17 00:56