WPF에서는 DataGrid 행 머리글에 토글 단추를 사용하여 각 부모 DataGrid 행에 대한 하위 항목을 자식 DataGrid로 자세히 표시합니다. 토글 버튼을 클릭하면 해당 상위 DataGrid 행의 visualstate가 "Checked"상태로 변경됩니다. 제대로 작동하고 있습니다. 그러나 동시에 모든 토글 버튼을 클릭하지 않고 다른 모든 부모 DataGrid 행 시각적 상태의 시각 상태를 "선택 취소"또는 "일반"으로 설정하려고했습니다. 다음 코드를 사용하고 있습니다. 하지만 제대로 작동하지 않습니다. 그러나 각 전환 버튼을 클릭하면 시각 상태가 올바르게 변경됩니다. WPF DataGrid 행 머리글 토글 버튼 Visualstate 코드 뒤에서 변경
private void ToggleButton_Click(object sender, RoutedEventArgs e)
{
DependencyObject obj = (DependencyObject)e.OriginalSource;
while (!(obj is DataGridRow) && (obj != null))
{
obj = VisualTreeHelper.GetParent(obj);
}
if (obj is DataGridRow)
{
if ((obj as DataGridRow).DetailsVisibility == Visibility.Visible)
{
(obj as DataGridRow).IsSelected = false;
(obj as DataGridRow).DetailsVisibility = System.Windows.Visibility.Collapsed;
}
else if ((obj as DataGridRow).DetailsVisibility == Visibility.Collapsed)
{
for (int i = 0; i < Data_Grid.Items.Count; i++)
{
DataGridRow itm = GetDataGridRowitem(i);
itm.IsSelected = false;
itm.DetailsVisibility = System.Windows.Visibility.Collapsed;
VisualStateManager.GoToElementState(itm, "Unchecked", true);
}
DataTemplate dt = FindResource("tocchild") as DataTemplate;
Data_Grid.RowDetailsTemplate = dt;
(obj as DataGridRow).IsSelected = true;
(obj as DataGridRow).DetailsVisibility = Visibility.Visible;
VisualStateManager.GoToElementState((obj as DataGridRow), "Checked", true);
}
}}
또한 나는
VisualStateManager.GoToState((obj as DataGridRow), "Checked", true);
도움말 나를하시기 바랍니다했습니다. 감사합니다. .