DataTemplate 등 안의 컨트롤 이름에 접근 할 수 없음
접근하기 위해선 함수 하나 만든다
public IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
yield return (T)child;
foreach (T childOfChild in FindVisualChildren<T>(child))
yield return childOfChild;
}
}
}
사용하려 하는 곳에서 RadioButtonChecked 이 함수를 호출 해주면 된다
public List<string> RadioButtonChecked()
{
List<string> checkedName = new List<string>();
foreach (var name in FindVisualChildren<RadioButton>(this))
{
if (name.IsChecked == true)
{
checkedName.Add(name.Name);
}
}
return checkedName;
}
전체 코드
라디오 버튼이 클릭 된 것의 이름만 얻어오기 위함
public IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
yield return (T)child;
foreach (T childOfChild in FindVisualChildren<T>(child))
yield return childOfChild;
}
}
}
public List<string> RadioButtonChecked()
{
List<string> checkedName = new List<string>();
foreach (var name in FindVisualChildren<RadioButton>(this))
{
if (name.IsChecked == true)
{
checkedName.Add(name.Name);
}
}
return checkedName;
}
public void MainFuction()
{
var CheckedRadioButtonName = RadioButtonChecked();
}
'WPF' 카테고리의 다른 글
[ wpf ] wpf Live chart _ Stack chart 1초마다 업데이트 해보기 (1) | 2022.12.26 |
---|---|
[ wpf ] Listview Filter (0) | 2022.12.26 |
[ wpf ] Property Grid 만드는 법 (0) | 2022.11.24 |
[ wpf ] Live Chart _ Doughnut Chart 사용해보기 (0) | 2021.11.26 |
[ wpf ] mvvm ViewModel에서 이벤트 생성해서 사용하기 (0) | 2021.07.09 |