2012-02-21 19 views
1

おはよう!ビューモデルからリストの選択項目を取得

私は、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

お客様のVMにはProject SelectedProject { get; set; }プロパティが必要です。グリッドから

ビンSelectedRow(か何か)それには、このような

ItemsSource="{Binding Path=TaskView}" SelectedItem="{Binding Path=SelectedProject}" 
+0

まあSelectedTaskです。しかし、次に、XAMLのこのプロパティにどのようにバインドするのですか? –

+0

SelectedItem = "{バインディングパス= SelectedProject}"は、私が探していたものです。ありがとう! –

+0

ああ待って!、それはSelectedItemを解決することはできません..それはこのプロパティが利用できないようですther –

0

は何か:タスクは、関連するプロジェクトを持っていますが、同じであるため

<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>