Сетка данных Silverlight - PullRequest
       6

Сетка данных Silverlight

3 голосов
/ 06 января 2010

В приложении Silverlight у меня есть таблица данных с изображением в качестве первого столбца (см. Код, который я использую ниже)

когда я нажимаю на изображение, которое захватывает событие MouseLeftButtonDown, проблема, с которой я работаю, заключается в том, что при нажатии на изображение SelectedIndex в сетке данных не меняется Следовательно, я не знаю, какая строка был нажат.

<data:DataGridTemplateColumn Width="25">
    <data:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Image Width="20" Stretch="Fill" Name="Delete"  Source="/Portal;Component/Images/Delete.png" MouseLeftButtonDown="ImageDelete_MouseLeftButtonDown"/>
        </DataTemplate>
    </data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Этот вопрос довольно старый, поэтому я не уверен, есть ли у вас ответ или нет, но вы можете установить какой-либо идентификатор в свойстве тега изображения, которое вы можете использовать для идентификации строка (или, точнее, объект, привязанный к строке), из которого происходит щелчок. Я предполагаю, что вы привязываете какой-то объект из коллекции к строке и что в вашем событии тип «отправитель» имеет тип «изображение».

<data:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Image Width="20" Stretch="Fill" Name="Delete"  Source="/Portal;Component/Images/Delete.png" MouseLeftButtonDown="ImageDelete_MouseLeftButtonDown" Tag="{Binding Id}"/>
    </DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>

Теперь вы можете получить доступ к идентификатору объекта, который привязан к строке, по которой щелкнули, вот так ... (в VB)

    Private Sub ImageDelete_MouseLeftButtonDown(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs)
        Dim img As Image = TryCast(sender, Image)
        Dim id As Integer = CInt(img.Tag)
        ' Do stuff with id
    End Sub

в C #:

Private void ImageDelete_MouseLeftButtonDown(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    Image img = sender as Image;
    int id = Convert.ToInt32(img.Tag);
    // do stuff with id
}

код здесь

0 голосов
/ 06 января 2010

Вы устанавливаете e.Handled в true в вашем обработчике событий на шанс? Если это так, то сетка данных не будет видеть событие нажатия мыши.

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