반응형
[클릭] 이벤트핸들러에서 버튼의 발신원 행을 가져옵니다.
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
반응형
'prosource' 카테고리의 다른 글
Git으로 분기점을 찾으십니까? (0) | 2023.04.23 |
---|---|
iOS Simulator 배포 대상은 7.0으로 설정되었지만 이 플랫폼에서 지원되는 배포 대상 버전은 8.0에서 12.1입니다. (0) | 2023.04.23 |
Windows Azure 스토리지 인증서가 만료됨 (0) | 2023.04.23 |
하나의 XAML 스타일에 대해 여러 TargetType을 정의할 수 있습니까? (0) | 2023.04.23 |
Web Publish 비밀번호가 Azure 관리자 비밀번호와 동일하지 않습니까? (0) | 2023.04.23 |