Как получить ссылку кнопки внутри сетки данных в модели представления в silverlight? - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть сетка данных, объявленная в xaml следующим образом:

<sdk:DataGrid x:Name="ProductsForProjectDataGrid" AutoGenerateColumns="True" ItemsSource="{Binding Path=Products.ProductsForProject}">
                  <sdk:DataGrid.Columns>
            <sdk:DataGridTemplateColumn x:Name="DeleteTemplate" Width="10*">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>

                        <Button x:Name="DeleteProductButton" Command="{Binding DeleteProductCommand}" CommandParameter="Products.SelectedProduct" >

                            <Button.Content>

                                <Image x:Name="DeleteProductImage" Visibility="Visible" Height="20" Source="C:\Documents and Settings\DELETE.GIF" Width="20"/>
                            </Button.Content> 
                        </Button>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>
            <sdk:DataGridTextColumn Binding="{Binding Product}" Header="Product Name" IsReadOnly="True" Width="40*"/>                          

        </sdk:DataGrid.Columns>

    </sdk:DataGrid>

и в viewModel я должен связать кнопку с командой, я могу получить ссылку на сетку данных, используя это,

_dlgProducts.ProductsForProjectDataGrid

где _dlgproducts - объект, теперь как я могу получить ссылку на кнопку удаления, как только я получу ссылку, я могу привязать к ней команду, мне нужно что-то вроде

_dlgProducts.ProductsForProjectDataGrid.DeleteProductButton

или что-то, я не уверен, как это получить ...

Спасибо:)

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Связывание внутри DataTemplate в DataGrid в Silverlight не работает так, как вы ожидаете.Вам нужно использовать DataContextProxy.Смотрите образец здесь:

http://weblogs.asp.net/dwahlin/archive/2009/08/20/creating-a-silverlight-datacontext-proxy-to-simplify-data-binding-in-nested-controls.aspx

0 голосов
/ 05 февраля 2012

Не знаю, в чём ваша проблема.Вы хотите установить команду для Button в модели представления (которая, кстати, ломает ваш mvvm ...), но у вас есть команда удаления, связанная с кнопкой в ​​XAML.Если я правильно понимаю, ваша привязка не работает, и вы хотите сделать это в коде позади.Если это так, пожалуйста, посмотрите на этот вопрос и ответ.Еще две вещи:

  • , когда вы заработаете, ваша привязка CommandParameter должна выглядеть примерно так: CommandParameter="{Binding}"
  • , вам лучше добавить изображение для удаления в ресурсы приложения ииспользуйте синтаксис пакета / компонента для свойства Source, например: здесь
...