2016-03-22 12 views
0

私は現在mvvmのプロジェクトで作業しています。だから私は追加/変更のエントリゾーンを含む表示とグリッドの次にしか提供しないDataGridを持っています。Mvvm有効でないDataGridの変更を防止します

私はライン上の領域の発作で

SelectedItem

負荷データをクリックしたときに、私は例のSelectedItem

[RaisePropertyChanged] 
    public virtual Ticket SelectedItem {get;set;} 

を使用する行をクリックしてください。

と私は写る範囲を変更...

After

データは、グリッドのデータソースに更新を開始します。私が望むものを

は、DataGridは私が

XAMLコードのDataGrid

<!-- DATAGRID --> 
    <D:DataGridRecherche/> 
    <D:DataGridTemplate x:Name="Datagrid" MinWidth="250" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" ItemsSource="{Binding DataTickets}"> 
     <DataGrid.Columns> 
      <D:DataGridFirstColumn/> 
      <DataGridTextColumn Header="ID" Width="Auto" IsReadOnly="True" Binding="{Binding Path=Tic_Id}" /> 
      <DataGridTextColumn Header="Date" Width="Auto" IsReadOnly="True" Binding="{Binding Path=Tic_Date}" /> 
     </DataGrid.Columns> 
    </D:DataGridTemplate> 
    <!-- END DATAGRID --> 

XAMLコードの編集グリッド私の版を終えたときにのみ更新することです:

<Grid Name="Fiche" Grid.Column="1" Grid.RowSpan="2" Visibility="{Binding CurrentMode, Converter={StaticResource FicheVisibilityConverter}}" Style="{StaticResource myFicheStyle}"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="30"/> 

      <RowDefinition Height="30"/> 

      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 

     </Grid.RowDefinitions> 

     <TextBlock Text="Fiche Tickets" Style="{StaticResource FicheLabelTitleStyle}" Grid.Row="0" Grid.ColumnSpan="2"/> 

     <!-- ID --> 
     <TextBlock Grid.Row="1" Text="ID :" Style="{StaticResource FicheLabelStyle}"/> 
     <TextBox Grid.Row="1" Grid.Column="1" 
        IsEnabled="False" 
        Text="{Binding SelectedItem.Tic_Id}" 
        Style="{StaticResource FicheTextboxStyleNumber}"/> 

     <!-- Date --> 
     <TextBlock Grid.Row="2" Text="Date :" Style="{StaticResource FicheLabelStyle}"/> 
     <TextBox Grid.Row="2" Grid.Column="1" 
       Text="{Binding SelectedItem.Tic_Date, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}" 
       Style="{StaticResource FicheTextboxStyleText}" /> 


     <!--BUTTON FICHE --> 
     <Grid Grid.Column="1" Grid.Row="10"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <Button Name="BtnAnnuler" Command="{Binding CurrentModeCommand}" CommandParameter="DEFAUT" Style="{StaticResource FicheButtonAnnuler}"/> 
      <Button Grid.Column="1" Command="{Binding ValidatingCommand}" Style="{StaticResource FicheButtonValider}" /> 
     </Grid> 
     <!--END BUTTON FICHE --> 
    </Grid> 

答えて

0

からUpdateSourceTrigger=PropertyChangedを削除しますあなたの日付TextBoxバインディング:

<TextBox Grid.Row="2" Grid.Column="1" 
     Text="{Binding SelectedItem.Tic_Date, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" 
     Style="{StaticResource FicheTextboxStyleText}" /> 

UpdateSourceTrigger=PropertyChangedは、変更を行うとすぐにバインディングをトリガーしてソースを更新します。

+0

問題は、私はそれを取る場合、私は、私はあなたが何を意味するか理解していないエリアの発作 –

+0

に私の過ちを管理することができなかったということです。 –

+0

私はエラーを管理するためにUpdateSourceTrigger = PropertyChangedを使用しなければならないので、削除できません。私の問題は、送信ボタンをクリックした後にしかデータグリッドを更新しないようにすることです –

関連する問題