如何绑定datagrid中的Edit链接,我正在使用以下代码,但是无法在我的viewmodel中将selecteditem绑定到seletcedMember:
<sdk:DataGrid x:Name="MembersListDataGrid" Height="Auto"
ItemsSource="{Binding Members}"
SelectedItem="{Binding SelectedMember, Mode=OneWay}"
AutoGenerateColumns="False" ColumnWidth="*" IsReadOnly="True">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="myButton" Content="Edit" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="5" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<mvvmlightcmd:EventToCommand
Command="{Binding Main.MemberDetailViewCommand, Mode=TwoWay, Source={StaticResource Locator}}"
CommandParameter="{Binding}" PassEventArgsToCommand="True"
/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
在我的视图模型中,我有SelectedMember属性:
public Member SelectedMember
{
get
{
return _SelectedMember;
}
set
{
if (_SelectedMember != value)
{
_SelectedMember = value;
RaisePropertyChanged("SelectedIMember");
}
}
}
我逐步执行代码,它命中了我的命令,但SelectedMember始终为null。
答案 0 :(得分:0)
请记住,使用DataGrid时,DataGrid中的每一列都会将其上下文设置为网格数据上下文的数据成员。在设置DataGrid的ItemsSource时,实际上是在定义父DataContext,它将用作每列数据成员的源。
在您的情况下,Hyperlink的数据上下文不是您的ViewModel,而是父DataGrid的ItemsSource属性(我们无法从您的代码片段中看到)。
您需要在XAML中使命令成为StaticResource,或者使用相对绑定来获取父控件的DataContext。
有关如何执行此操作的示例,请参阅this post。