2017-12-04 9 views
0

DataGridCheckBoxColumnのチェックボックスがオンになっているときにボタンを有効にします。私はいくつかの研究を行い、このstackoverflowを以下に見つけました。私は、UpdateSourceTrigger = PropertyChangedを列に置くことはトリックを行うべきだが、私のプロパティにブレークポイントを置くと呼び出されないことがわかった。ここでWPF checkboxcolumn- onチェックボックスの値が変更された、何かをする

Checkbox event that fires AFTER the value has changed

は私が持っている私のXAMLコードです:MyClassのは3を含む単純なクラスです

private ObservableCollection<Objects.MyClass> _myProperty; 
public ObservableCollection<Objects.MyClass> MyProperty 
{ 
    get { return _myProperty; } 
    set 
    { 
     _myProperty= value; 
     this.RaisePropertyChanged(); 
    } 
} 

:私の見解モデルで

<DataGrid Grid.Row="3" Grid.Column="1" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Binding Path=MyProperty, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"> 
    <DataGrid.Columns> 
     <DataGridCheckBoxColumn Binding="{Binding Path=Status, UpdateSourceTrigger=PropertyChanged}" Header="Verify" Width="1*"/> 
     <DataGridTextColumn Binding="{Binding Path=Id, UpdateSourceTrigger=PropertyChanged}" Header="PalletID" IsReadOnly="True" Width="2*"/> 
    </DataGrid.Columns> 
</DataGrid> 

、私の財産はこれですプロパティ:

public string Id { get; set; } 
public bool Verified { get; set; } 
public bool Status { get; set; } 


public MyClass(string id, bool currentStatus) 
{ 
    Id = id; 
    Verified = currentStatus; 
    Status = false;//Set to false initially to deselect checkbox. 
} 

私には何かがありますか?私がオンラインで収集したものから、チェックボックス列のUpdateSourceTrigger = PropertyChangedは、チェックボックス値が変更されたときに表示するものです。どんな助けも素晴らしいだろう。

+0

したがって、あなたのプロパティ**ステータス**は決してヒットしませんか? – nvoigt

+0

プロパティが呼び出されていないことをどのように知っていますか? – mm8

+0

私のクラスの "Status"にブレークポイントを置くと返されます。プロパティーはビューで更新されます。しかし、問題は、ビューに更新された値が表示されないことです。私は私の財産にブレークポイントを置いたので、これは発生していないことを知っています。 –

答えて

0

コードは動作しています。ボタンを追加して、ステータスプロパティをボタンのIsEnabledプロパティにバインドするだけです。

<DataGrid Grid.Row="3" Grid.Column="1" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Binding Path=MyProperty, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"> 
      <DataGrid.Columns> 
       <DataGridCheckBoxColumn Binding="{Binding Path=Status, UpdateSourceTrigger=PropertyChanged}" Header="Verify" Width="1*"/> 
       <DataGridTextColumn Binding="{Binding Path=Id, UpdateSourceTrigger=PropertyChanged}" Header="PalletID" IsReadOnly="True" Width="2*"/> 
       <DataGridTemplateColumn> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Button IsEnabled="{Binding Status}">I am a button</Button> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
+0

フィードバックいただきありがとうございます。私がバインディングしていたボタンは、DataGridの外にありましたが、あなたが提供したものは私のアプリで働いていました。 –

関連する問題