UWP 응용 프로그램을 개발 중이며 Telerik의 RadDataGrid 컨트롤에 데이터를 표시해야합니다. 한 시나리오에서는 TemplatedColumn을 사용하여 데이터를 표시하고 DataTemplate 내부에 배치 된 컨트롤에 명령을 바인딩해야하지만 명령은 ViewModel에서 트리거되지 않지만 이러한 이벤트에 이벤트를 첨부하면 이벤트가 코드에서 트리거됩니다.RadDataGrid의 TemplatedColumn에서 바인딩 명령 UWP
여기<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="Loaded">
<Core:CallMethodAction MethodName="LoadData"
TargetObject="{Binding}" />
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<Grid x:Name="gdRoot">
<telerikGrid:RadDataGrid ItemsSource="{x:Bind AvailableVM.PickListItems,Mode=OneWay}"
Background="{StaticResource GridLinesBrush}"
SelectionUnit="Cell"
GridLinesBrush="{StaticResource GridLinesBrush}"
AlternateRowBackground="{StaticResource AlternateRowBackground}"
AutoGenerateColumns="False"
ScrollViewer.VerticalScrollBarVisibility="Hidden">
<telerikGrid:RadDataGrid.Columns>
<telerikGrid:DataGridTemplateColumn Header="Assign"
SizeMode="Auto">
<telerikGrid:DataGridTemplateColumn.CellContentTemplate>
<DataTemplate>
<Button Background="Transparent"
Command="{Binding DataContext.ListSelectedCommand, ElementName=gdRoot}"/>
</DataTemplate>
</telerikGrid:DataGridTemplateColumn.CellContentTemplate>
</telerikGrid:DataGridTemplateColumn>
</telerikGrid:RadDataGrid.Columns>
</telerikGrid:RadDataGrid>
</Grid>
는 뷰 모델 코드입니다 :이 뒤에 가능한 이유가 될 수 무엇
private ICommand _listSelectedCommand;
public ICommand ListSelectedCommand
{
get { return _listSelectedCommand; }
set { Set(nameof(ListSelectedCommand), ref _listSelectedCommand,value); }
}
public void LoadData()
{
InitializeCommands();
}
private void InitializeCommands()
{
ListSelectedCommand= new RelayCommand(()=>
{
});
}
여기
는 코드입니다.
감사합니다. @Sunteen. 나는 그 이유를 발견했다. 다음 링크는 https://www.telerik.com/forums/what-is-the-correct-way-to-bind-a-command-on-button-in-template입니다. –