データセットは、基本的に、データグリッド(特定のDXGrid)にバインドされたブール値プロパティを持つオブジェクトのリストです。チェックボックスをクリックすると、IsCheckedプロパティが表示されます。スタンドアロンのテキストボックスの場合は、BindingのUpdateSourceTriggerオプションを使用しますが、少なくともDXGridではそれは利用可能ではないようです。つまり、私はプロパティを更新するためにチェックボックスのフォーカスを失う必要があります。WPF/MVVMを使用して、グリッド内のチェックボックスから変更イベントを取得しますか?
すべてのアイデア?
以下のRaisePropertyChanged関数がINotifyPropertyChangedの実装であるとします。
データオブジェクト
public class MyObject
{
bool _isChecked;
string _name;
int _id;
public MyObject(OtherObject oo)
{
_name = oo.Name;
_id = oo.ID;
}
public int ID
{ get { return _id; }}
public string Name
{ get { return _name; }}
public bool IsChecked
{
get { return _isChecked; }
set
{
if (value == _isChecked)
return;
_isChecked = value;
RaisePropertyChanged("IsChecked");
}
}
}
のViewModel
class MyTestViewModel : BaseViewModel
{
#region Fields
#endregion
public MyTestViewModel(Message message)
: base(message)
{
AvailableObjects = PopulateDataSet();
}
#region Properties
public List<MyObject> AvailableObjects { get; set; }
}
ビューXAML
<dxg:GridControl x:Name="SearchGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MaxHeight="1024" AutoPopulateColumns="True" DataSource="{Binding Path=AvailableObjects}" >
<dxg:GridControl.Columns>
<dxg:GridColumn Header="Select" Width="60" FixedWidth="True" FieldName="IsChecked" ImmediateUpdateColumnFilter="True"></dxg:GridColumn>
<dxg:GridColumn Header="ID Number" Width="130" FixedWidth="True" ReadOnly="True" FieldName="ID"></dxg:GridColumn>
<dxg:GridColumn Header="Name" FieldName="Name" ReadOnly="True"></dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowEditing="True" x:Name="view" IndicatorWidth="0" AutoWidth="True"/>
</dxg:GridControl.View>
</dxg:GridControl>
あなたは内蔵のDataGridCheckBoxColumnとDataGridのWPFのを使用していた場合、あなただけの 'モード= TwoWay'であなたにisCheckedプロパティに列をバインドする可能性が...しかし、私は」私はDXGridを使ってその方法を教えてくれませんでした。 –
グリッドにアンバインドされたチェックボックスを追加することができます(実際には、結果が混在しています)。バインディングパスは何をすると思いますか? {Binding Path = IsChecked、Mode = TwoWay}は動作していないようです。 – SpaceCowboy74