Получить выбранный элемент в списке из представления модели - PullRequest
2 голосов
/ 21 февраля 2012

Доброе утро!

Я программирую приложение для управления, которое показывает список задач с использованием WPF и MVVM patern.Пользователи также могут редактировать этот список, но я хочу использовать кнопку удаления, чтобы удалить выбранную строку.Проблема в том, что я не знаю, как получить доступ к выбранной строке из ModelView, и я не хочу использовать выделенный код.Я думаю, что лучший вариант - это использовать какое-то связывание, но я не уверен, как это сделать.

Это код (я использую элементы управления DevXpress, но он почти такой же)

<dxg:GridControl  ItemsSource="{Binding Path=TaskView}" Loaded="GridControl_Loaded">
       <dxg:GridControl.Columns>
            <dxg:GridColumn Visible="False" DisplayMemberBinding="{Binding Path=ID, Mode=OneWay}" />
            <dxg:GridColumn Header="Project" DisplayMemberBinding="{Binding Path=ProjectCode, Mode=TwoWay}" AllowEditing="True" ContentChanged="OnHoursChanged"/>
            <dxg:GridColumn Header="Project Description" DisplayMemberBinding="{Binding Path=ProjectName, Mode=TwoWay}" AllowEditing="False"/>
            <dxg:GridColumn Header="Description" DisplayMemberBinding="{Binding Path=ProjectDescription, Mode=TwoWay}" AllowEditing="True"/>
            <dxg:GridColumn Header="Comment" DisplayMemberBinding="{Binding Path=Comment, Mode=TwoWay}" AllowEditing="True"/>
            <dxg:GridColumn Header="{Binding ElementName=mon,Path=Text}" DisplayMemberBinding="{Binding Path=HoursMonday, Mode=TwoWay}" AllowEditing="True" FieldName="M" />
            <dxg:GridColumn Header="{Binding ElementName=tue,Path=Text}" DisplayMemberBinding="{Binding Path=HoursTuesday, Mode=TwoWay}" AllowEditing="True" FieldName="T" />
            <dxg:GridColumn Header="{Binding ElementName=wed,Path=Text}" DisplayMemberBinding="{Binding Path=HoursWednesday, Mode=TwoWay}" AllowEditing="True" FieldName="W" />
            <dxg:GridColumn Header="{Binding ElementName=thu,Path=Text}" DisplayMemberBinding="{Binding Path=HoursThursday, Mode=TwoWay}" AllowEditing="True" FieldName="Th" />
            <dxg:GridColumn Header="{Binding ElementName=fri,Path=Text}" DisplayMemberBinding="{Binding Path=HoursFriday, Mode=TwoWay}" AllowEditing="True" FieldName="F" />
            <dxg:GridColumn Header="{Binding ElementName=sat,Path=Text}" DisplayMemberBinding="{Binding Path=HoursSaturday, Mode=TwoWay}" AllowEditing="True" FieldName="Sat" />
            <dxg:GridColumn Header="{Binding ElementName=sun,Path=Text}" DisplayMemberBinding="{Binding Path=HoursSunday, Mode=TwoWay}" AllowEditing="True" FieldName="Sun" />
            <dxg:GridColumn Header="Total" DisplayMemberBinding="{Binding Path=Total, Mode=OneWay}" AllowEditing="False" FieldName="Tot" />
        </dxg:GridControl.Columns>
    </dxg:GridControl>

У вас есть идеи?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Ваша виртуальная машина должна иметь свойство Project SelectedProject { get; set; }.

Корзина SelectedRow (или что-то) из Сетки к ней:

ItemsSource="{Binding Path=TaskView}" SelectedItem="{Binding Path=SelectedProject}"
0 голосов
/ 22 января 2013

Примерно так:

<dxg:GridControl Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="5"  Margin="4,4,4,4"
                             Name="gridDatos"
                             ItemsSource="{Binding Usuarios}" IsFilterEnabled="True"
                             >
                <dxg:GridControl.View>
                    <dxg:TableView AllowPerPixelScrolling="True" AllowEditing="False" NavigationStyle="Row"
                                   AllowHorizontalScrollingVirtualization="False"
                                   ShowGroupPanel="False"
                                   FocusedRow="{Binding SelectedUsuario, Mode=TwoWay}"/>
                </dxg:GridControl.View>
                <dxg:GridControl.Columns>
                    <dxg:GridColumn FieldName="usuario_us" ReadOnly="True" Header="Usuario" Width="133" />
                    <dxg:GridColumn FieldName="nombre_us"  ReadOnly="True" Header="Nombre" Width="308" />
                    <dxg:GridColumn FieldName="activo_us"  ReadOnly="True" Header="Activo" />
                </dxg:GridControl.Columns>
            </dxg:GridControl>
...