prosource

[클릭] 이벤트핸들러에서 버튼의 발신원 행을 가져옵니다.

probook 2023. 4. 23. 10:35
반응형

[클릭] 이벤트핸들러에서 버튼의 발신원 행을 가져옵니다.

WPF 데이터그램의 아이템소스를 DAL에서 반환된 오브젝트 목록으로 설정했습니다.아래에 xaml이라는 버튼이 있는 컬럼도 추가했습니다.

<toolkit:DataGridTemplateColumn  MinWidth="100" Header="View">
    <toolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Click="Button_Click">View Details</Button>
        </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

이것으로 괜찮습니다.단, Button_Click 메서드에서는 버튼이 있는 데이터 ID의 행을 얻을 수 있는 방법이 있습니까?구체적으로는 오브젝트의 속성 중 하나가 "Id"이며, 이벤트 핸들러의 다른 폼의 컨스트럭터에 전달하고 싶습니다.

private void Button_Click(object sender, RoutedEventArgs e)
    {
        //I need to know which row this button is on so I can retrieve the "id"  
    }

내 XAML에 뭔가 더 필요한가? 아니면 우회적으로 하는 건가?도움/조언 감사합니다.

기본적으로 버튼은 행 데이터 객체의 데이터콘텍스트를 상속합니다.MyObject라고 부르면서 MyObject를 희망합니다.신분증은 네가 원했던 거야.

private void Button_Click(object sender, RoutedEventArgs e)
{
    MyObject obj = ((FrameworkElement)sender).DataContext as MyObject;
    //Do whatever you wanted to do with MyObject.ID
}

또 다른 방법은 ID를 버튼의 CommandParameter 속성에 바인드하는 것입니다.

<Button Click="Button_Click" CommandParameter="{Binding Path=ID}">View Details</Button>

그런 다음 코드로 다음과 같이 액세스할 수 있습니다.

private void Button_Click(object sender, RoutedEventArgs e)
{
    object ID = ((Button)sender).CommandParameter;
}

명령어 파라미터 DataContext에 바인드하고 MVVM을 존중하는 Jobi Joy says button은 데이터 텍스트 폼 행을 상속합니다.

XAML의 버튼

<RadButton Content="..." Command="{Binding RowActionCommand}" 
                         CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext}"/>

명령어 구현

public void Execute(object parameter)
    {
        if (parameter is MyObject)
        {

        }
    }
MyObject obj= (MyObject)((Button)e.Source).DataContext;

DataGrid의 DataContext가 DataView 객체(DataTable의 DefaultView 속성)인 경우 다음을 수행할 수도 있습니다.

private void Button_Click(object sender, RoutedEventArgs e) {
   DataRowView row = (DataRowView)((Button)e.Source).DataContext;
}

언급URL : https://stackoverflow.com/questions/1168976/button-in-a-column-getting-the-row-from-which-it-came-on-the-click-event-handle

반응형