Привязать сетку данных Редактировать гиперссылку для просмотра модели в Silverlight - PullRequest
0 голосов
/ 26 октября 2011

Как связать ссылку «Изменить» в сетке данных, я использую следующий код, но не могу получить выбранный элемент для привязки к 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 всегда равен нулю.

1 Ответ

0 голосов
/ 26 октября 2011

Помните, что при использовании DataGrid каждый столбец в DataGrid будет иметь свой контекст, установленный на данные член контекста данных сетки.Когда вы устанавливаете DataSrid ItemsSource, вы по существу определяете родительский DataContext, который будет использоваться в качестве источника для элементов данных для каждого столбца.

В вашем случае контекст данных Гиперссылки будет не вашей ViewModel, а вместо этогосвойство ItemsSource родительского DataGrid (которое мы не видим из вашего фрагмента кода).

Вам нужно либо сделать команду StaticResource в вашем XAML, либо использовать относительную привязку, чтобы получить DataContext вашего родительского элемента управления.

См. этот пост для примеракак это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...