[英]Bind Xceed DataGridControl with Caliburn Micro
我想将Xceed DataGridControl与Caliburn Micro绑定。 设置绑定的最佳方法是什么,我想在视图模型中使用不带ICommands的Caliburn样式方法。 在Enter键或在网格中双击时,应调用方法OpenContract(Contract c)
。
视图:
<xcdg:DataGridControl ItemsSource="{Binding Contracts}" AutoCreateColumns="False">
<xcdg:DataGridControl.InputBindings>
<KeyBinding Key="Enter" Command="{Binding Path=OpenContractCommand}" CommandParameter="{Binding ElementName=DataGrid, Path=SelectedItems}"/>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding Path=OpenContractCommand}" CommandParameter="{Binding ElementName=DataGrid, Path=SelectedItems}"/>
</xcdg:DataGridControl.InputBindings>
<xcdg:DataGridControl.View>
<xcdg:TableView AllowColumnChooser="True" ShowFixedColumnSplitter="False" AllowRowResize="False" ShowRowSelectorPane="False" UseDefaultHeadersFooters="False" ColumnStretchMode="Last">
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:ColumnManagerRow AllowColumnReorder="True" AllowSort="True" AllowColumnResize="True" AllowAutoFilter="False" />
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="Name" Title="Name"></xcdg:Column>
<xcdg:Column FieldName="CustomerName" Title="Customer"></xcdg:Column>
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
ViewModel:
public class ContractViewModel : Screen
{
public BindableCollection<Contract> Contracts { get; private set; }
private ContractRepository _repository;
public ContractViewModel(ContractRepository repository)
{
_repository = repository
}
public async void OnViewLoaded()
{
Contracts.Clear();
Contracts.AddRange(_repository.GetAll());
}
public IEnumerable<IResult> OpenContract(Contract contract)
{
yield return;
}
}
事实证明可以使用caliburn进行绑定(请参阅此讨论) :
<xcdg:DataGridControl ItemsSource="{Binding Contracts}" AutoCreateColumns="False">
<xcdg:DataGridControl.Resources>
<Style TargetType="{x:Type xcdg:DataCell}">
<Setter Property="cal:Message.Attach" Value="[Event PreviewMouseDoubleClick] = [Action OpenContract($this)]" />
</Style>
</xcdg:DataGridControl.Resources>
<xcdg:DataGridControl.View>
<xcdg:TableView AllowColumnChooser="True" ShowFixedColumnSplitter="False" AllowRowResize="False" ShowRowSelectorPane="False" UseDefaultHeadersFooters="False" ColumnStretchMode="Last">
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:ColumnManagerRow AllowColumnReorder="True" AllowSort="True" AllowColumnResize="True" AllowAutoFilter="False" />
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="Name" Title="Name"></xcdg:Column>
<xcdg:Column FieldName="CustomerName" Title="Customer"></xcdg:Column>
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.