Связывание команды в сетке данных - PullRequest
0 голосов
/ 29 декабря 2011

Я пытаюсь привязать кнопку с сеткой данных к пользовательской команде.

Но по какой-то причине команда не выполняется.

Это XAML:

    <Grid Name="LayoutRoot">
        <ListView Name="ListView1"  
          ItemsSource="{Binding}"
          IsSynchronizedWithCurrentItem="True">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="ID" Width="100">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding Path=id,Mode=OneWay}" 
                                 Margin="-6,0,-6,0" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Name" Width="100">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding Path=name,Mode=OneWay}" 
                                 Margin="-6,0,-6,0" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Path" Width="50">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding Path=path,Mode=OneWay}" 
                                 Margin="-6,0,-6,0" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Update" Width="50">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Button CommandParameter="{Binding id}" Command="{Binding ???????????}" Content="Edit"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

Что я должен написать вместо ?????????? чтобы показать сообщение с идентификатором.


Нашел решение здесь:

WPF DataGrid - кнопка в столбце, получающая строку, из которой она пришла, в обработчике события Click

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Я думаю, что проблема в ячейках DataContext. В пределах DataTemplate он не видит родительский контекст. Попробуйте добавить свою команду в Ресурсы и сделайте что-то вроде:

<DataTemplate>
    <Button CommandParameter="{Binding id}" Command="{StaticResource yourCommand}" Content="Edit"/>
</DataTemplate>
0 голосов
/ 29 декабря 2011

Создать команду Inherit из интерфейса ICommand.

public class ShowMessageWithIdCommand : ICommand
{
// Implement it members
}

в вашей модели просмотра:

public ICommand ShowMessageWithIdCommand
{
   get{return new ShowMessageWithIdCommand(...);}
}

Тогда ваш ????? будет: ShowMessageWithIdCommand

Подробнее вы можете найти здесь: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

...