繁体   English   中英

将Xceed DataGridControl与Caliburn Micro绑定

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM