我使用带有devexpress网格的Xamarin Forms,它包含多行。 我希望能够获得所选行/单元格的值。我怎样才能做到这一点?
<ScrollView>
<dxGrid:GridControl
x:Name="grid"
ItemsSource="{Binding materials}"
AutoFilterPanelVisibility="true"
IsReadOnly="true"
SortMode="Multiple">
<dxGrid:GridControl.Columns>
<dxGrid:TextColumn
FieldName="id"
Caption = "ID"
AutoFilterCondition="Contains"/>
<dxGrid:TextColumn
FieldName="description"
Caption = "Material"
AutoFilterCondition="Contains"/>
</dxGrid:GridControl.Columns>
</dxGrid:GridControl>
</ScrollView>
材质是一个简单的List,其中Material是一个简单的示例类,包含两个字符串属性(id,description)。
答案 0 :(得分:1)
正如您在documentation中所看到的,您可以绑定属性SelectedRowHandle
以恢复所选行:
当最终用户点击网格中的数据行时,该行将被选中。使用SelectedRowHandle属性获取或设置网格中当前选定的行。 SelectedDataObject属性返回一个对象,该对象指定在网格中选择的行所对应的数据源记录。更改网格选择后,将发生SelectionChanged事件。
我希望这可以帮到你。
答案 1 :(得分:1)
自己想出来:
<ScrollView>
<dxGrid:GridControl
x:Name="grid"
ItemsSource="{Binding materials}"
AutoFilterPanelVisibility="true"
IsReadOnly="true"
SortMode="Multiple"
SelectedRowHandle="{Binding selectedRow, Mode=TwoWay}"
SelectedDataObject="{Binding selectedRowObject, Mode=TwoWay}">
<dxGrid:GridControl.Columns>
<dxGrid:TextColumn
FieldName="description"
Caption = "Material"
AutoFilterCondition="Contains"/>
</dxGrid:GridControl.Columns>
</dxGrid:GridControl>
</ScrollView>
视图模型:
private int SelectedRow;
public int selectedRow
{
set
{
if(SelectedRow != value)
{
SelectedRow = value;
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("selectedRow"));
}
}
}
get
{
return SelectedRow;
}
}
private Object SelectedRowObject;
public Object selectedRowObject
{
set
{
if (SelectedRowObject != value)
{
SelectedRowObject = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("selectedRowObject"));
PropertyChanged(this, new PropertyChangedEventArgs("selectedRowDescription"));
}
}
}
get
{
return SelectedRowObject;
}
}
private String SelectedRowDescription;
public String selectedRowDescription
{
get
{
if(SelectedRowObject != null && SelectedRowObject is Material)
{
Material mat = (Material)SelectedRowObject;
return mat.description;
} else
{
return "-";
}
}
}