WPF에서 하이퍼 링크가 개체 속성에서 호출해야하는 명령에 대한 참조를 얻으려면 어떻게해야합니까?WPF - 데이터에서 하이퍼 링크 명령 가져 오기?
MVVM 패턴을 사용하여 WPF 응용 프로그램을 만들고 있습니다. 기본 창의 목록 상자에서 하이퍼 링크를 제거합니다. 각 하이퍼 링크는 클릭 할 때 뷰 모델의 ICommand 속성 중 하나를 호출합니다. 어떤 ICommand를 호출해야하는지 어떻게 지정합니까?
여기까지 시도한 내용은 다음과 같습니다. 하이퍼 링크는 목록 상자의 ItemsSource로 바인딩 된 ViewModel.Hyperlinks 속성에 포함되어 있습니다. 하이퍼 링크 속성 타입 MyHyperlink의 객체를 포함 :
는public class MyHyperlink
{
public string Text { get; set; }
public string ViewModelCommand { get; set; }
public int RecordID { get; set; }
}
MyHyperlink.ViewModelCommand 속성은 하이퍼 링크를 클릭 할 때 호출해야 뷰 모델 ICommand의의 이름을 포함합니다. 이 값을 사용하여 WPF 하이퍼 링크 컨트롤 의 Command 속성에 대한 PropertyPath를 지정하고 싶습니다. 목록 상자에 명령의 이름이있는 PropertyPath 리소스를 만들려고했지만 WPF에서는이를 허용하지 않습니다. 다음은 내 XAML입니다.
<ListBox ItemsSource="{Binding Hyperlinks}">
<ListBox.Resources>
<PropertyPath x:Key="CommandPath" Path="{Binding ViewModelCommand}" />
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{StaticResource CommandPath}"
CommandParameter="{Binding Path=RecordID}">
<TextBlock Text="{Binding Text}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
하이퍼 링크를 클릭 할 때 어떤 ICommand를 호출해야하는지 지정하려면 어떻게합니까? 위에 표시된 것처럼 리소스를 만들거나 다른 방법으로 만들었습니까? XAML에서이 작업을 수행해야합니다. 코드 숨김에 의존하고 싶지 않습니다. 당신의 도움을 주셔서 감사합니다!
동적 명령에 대한 코드 프로젝트 기사에서 IValueConverter를 사용하는 것보다 더 좋은 방법이 있다고 언급했습니다. 비밀에 대해서 우리를 들여 보내 주실 수 있습니까? – dthrasher
튀어 나오지 않았습니다. IValueConverter를 사용하고 있습니다. 그래서, 비밀은 없습니다. –