c# stackpanelの子要素の取得について
お世話になっております。
wpfの質問と迷ったのですがこちらに質問させて頂きます。
現在、stackpanelの子要素の取得しforeachで回そうとしているのですが子要素が入らずforeach
が回らずなぜ値が入らないのか調べても原因が分からない状態です。
下記のコードで行っているのですが、なにか原因があればご指摘ご教授よろしくお願いいたします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp1 {
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
bool _textreadonly = true;
bool _checkd = true;
//xml出力用の保存用クラスのインスタンス生成
Class1 test = new Class1();
private void Button_Click(object sender, RoutedEventArgs e)
{
//TextBoxのインスタンス生成
TextBox textBox = new TextBox();
var value = textvalue.Text;
//Radioボタンのインスタンス生成
RadioButton radio = new RadioButton();
if (value == null)
{
MessageBox.Show("登録内容を入力してからボタンを押下してください。");
}
else
{
////テキスト内容をxmlに出力するメソッド呼出
//Class2 class2 = new Class2();
//class2.Xmlwrite(value);
//動的にTextBoxとラジオボタンを追加
StackPanel panel = new StackPanel();
panel.Orientation = Orientation.Horizontal;
radio.GroupName = "name";
panel.Children.Add(textBox);
panel.Children.Add(radio);
stack2.Children.Add(panel);
//動的に作成したTextBoxに値を代入
textBox.Text = value;
//動的に作成したTextBoxを読み取り専用にする
textBox.IsReadOnly = _textreadonly;
//RadioButtonのタグプロパティにTextBoxをセット
radio.Tag = textBox;
//Radioボタンのクリックイベント追加
radio.Click += Radio_Click;
//登録完了メッセージ
//MessageBox.Show("登録が完了しました。");
}
}
private void Radio_Click(object sender, RoutedEventArgs e)
{
//senderにセットされいるオブジェクトをRadioButtonにキャストして変数に格納
var radiocast = (RadioButton)sender;
//Tagの中に格納されているTextBoxオブジェクトをTextBoxにキャストして変数に格納
var textcast = (TextBox)radiocast.Tag;
//以下、今回質問の場所
foreach (var test in stack2.Children.OfType<RadioButton>())
{
if (test.IsChecked == true)
{
textcast.IsReadOnly = false;
}
else
{
textcast.IsReadOnly = true;
}
}
}
}
}