DataGrid에 Link가 포함 된 열이 있습니다. 파일 내가 내 자료 뷰 모델 클래스에이 코드를 사용하고자하는이 방법을C# : Cast to Base
public void LinkClicked(object sender, RoutedEventArgs e)
{
var vm = (BasePartViewModel<Part>) DataContext;
vm.OpenFile();
}
를 사용
<DataGridHyperlinkColumn Binding="{Binding Path=Number}" >
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="LinkClicked"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
클릭
에 오픈됩니다.는 그러나 문제는이 캐스트가 있기 때문에 실제로 다른 모든 구현에
(BasePartViewModel<Part>) DataContext
작동하지 않는다는 것입니다. 예를 들어
(BasePartViewModel<Plug>) DataContext
및 Plug
는 Part
에서 유래. 파생 된 모든 ViewModel에서이 메서드를 구현하지 않고 작업을 수행하는 방법은 무엇입니까?
이벤트 처리기 코드가 xaml 파일의 코드 숨김 뒤에 있습니까? –
올바르게 이해한다면 캐스팅에만 문제가 있습니다. BasePartViewModel <>이 공변 (covariant)인지 확인하고 그렇지 않은 경우 확인하십시오. – CrudaLilium
@EyalPerry : 예, 그렇습니다. –