如何在编辑模式下将文本设置为XamComboEditor

时间:2017-07-17 11:59:57

标签: wpf xaml

我想在XamcomboEditor上工作。 我没有找到任何一步一步的例子 我想用XamComboEditor执行crud操作。 任何人都可以帮我简要介绍一下xamcomboeditor

1 个答案:

答案 0 :(得分:0)

它的第三方控件也可以在公司网站上找到代码和示例。 Xam combo Editor

XAML

<Window x:Class="XamComboEditorSnippets_cs.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:igEditors="http://infragistics.com/Editors"
xmlns:igDP="http://infragistics.com/DataPresenter"
Title="Window1" Height="300" Width="300">
<Window.Resources>
    <ObjectDataProvider MethodName="GetValues"
                        ObjectType="{x:Type sys:Enum}"
                        x:Key="VisibilityValues">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="Visibility" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>

    <!-- This is an ItemsProvider that can be shared by many XamComboEditors. In this
         example it is just bound to values of the Visibility enum. -->

    <igEditors:ComboBoxItemsProvider x:Key="ComboItemsProvider" 
                                     ItemsSource="{Binding Source={StaticResource VisibilityValues}}"/>
</Window.Resources>

<Grid>
    <DockPanel LastChildFill="True">

        <!-- the first XamComboEditor is using the ItemsProvider defined as a shared resource
             above -->

        <igEditors:XamComboEditor x:Name="XamComboEditor1" DockPanel.Dock="Top" 
                                  DropDownButtonDisplayMode="Always"
                                  SelectedItemChanged="XamComboEditor1_SelectedItemChanged"
                                  ItemsProvider="{StaticResource ComboItemsProvider}"/>

        <!-- the second XamComboEditor is defining its own ItemsProvider inline
             and making use of the ComboBoxDataItem helper class to easily define
             a separate DisplayText and Value for each item. Alternatively,
             you can set the ItemsSource to any IEnumerable and set the 
             DisplayMemberPath and ValuePath properties to achieve the same effect. -->

        <igEditors:XamComboEditor x:Name="XamComboEditor2" DockPanel.Dock="Top"
                                  ValueType="{x:Type sys:Int32}">
            <igEditors:XamComboEditor.ItemsProvider>
                <igEditors:ComboBoxItemsProvider >
                    <igEditors:ComboBoxItemsProvider.Items>
                        <igEditors:ComboBoxDataItem DisplayText="Item 1" Value="1"/>
                        <igEditors:ComboBoxDataItem DisplayText="Item 2" Value="2"/>
                        <igEditors:ComboBoxDataItem DisplayText="Item 3" Value="3"/>
                    </igEditors:ComboBoxItemsProvider.Items>
                </igEditors:ComboBoxItemsProvider>
            </igEditors:XamComboEditor.ItemsProvider>
        </igEditors:XamComboEditor>

        <!-- The following shows a XamDataGrid that adds an unbound field that
             sets its EditorStyle to a XamComboEditor that uses the same shared
             ItemsProvider that was used above. This leverages the significant 
             speed and memory footprint advantages of using a single shared 
             ItemsProvider for each record in the XamDataGrid. Note: this can
             also be used for standard bound Fields as well.-->

        <igDP:XamDataGrid x:Name="XamDataGrid1" BindToSampleData="True">
            <igDP:XamDataGrid.FieldLayouts>
                <igDP:FieldLayout>
                    <igDP:FieldLayout.Fields>
                        <igDP:UnboundField Name="Visibility Setting" DataType="{x:Type sys:Enum}">
                            <igDP:UnboundField.Settings>
                                <igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}">
                                    <igDP:FieldSettings.EditorStyle>
                                        <Style TargetType="{x:Type igEditors:XamComboEditor}">
                                            <Setter Property="ItemsProvider" Value="{DynamicResource ComboItemsProvider}"/>
                                            <Setter Property="DropDownButtonDisplayMode" Value="MouseOver"/>
                                        </Style>
                                    </igDP:FieldSettings.EditorStyle>
                                </igDP:FieldSettings>
                            </igDP:UnboundField.Settings>
                        </igDP:UnboundField>
                    </igDP:FieldLayout.Fields>
                </igDP:FieldLayout>
            </igDP:XamDataGrid.FieldLayouts>
        </igDP:XamDataGrid>
    </DockPanel>
</Grid>

C#

using Infragistics.Windows.Editors;
using Infragistics.Windows.DataPresenter;


public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        // the first XamComboEditor is using the ItemsProvider defined as a shared 
        // resource in xaml

        this.XamComboEditor1.ItemsProvider = this.Resources["ComboItemsProvider"] as ComboBoxItemsProvider;
        this.XamComboEditor1.DropDownButtonDisplayMode = DropDownButtonDisplayMode.Always;
        this.XamComboEditor1.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(XamComboEditor1_SelectedItemChanged);

        // the second XamComboEditor is defining its own ItemsProvider and
        // making use of the ComboBoxDataItem helper class to easily define
        // a separate DisplayText and Value for each item. Alternatively,
        // you can set the ItemsSource to any IEnumerable and set the 
        // DisplayMemberPath and ValuePath properties to achieve the same effect. 

        ComboBoxItemsProvider provider = new ComboBoxItemsProvider();
        for (int i = 0; i < 6; i++)
            provider.Items.Add( new ComboBoxDataItem(i, "Item " + i.ToString()));

        this.XamComboEditor2.ValueType = typeof(int);
        this.XamComboEditor2.ItemsProvider = provider;

        // The following shows a XamDataGrid that adds an unbound field that
        // sets its EditorStyle to a XamComboEditor that uses the same shared
        // ItemsProvider that was defined in xaml. This leverages the significant 
        // speed and memory footprint advantages of using a single shared 
        // ItemsProvider for each record in the XamDataGrid. Note: this can
        // also be used for standard bound Fields as well.

        UnboundField fld = new UnboundField();
        fld.Name = "Visibility Setting";

        Style style = new Style(typeof(XamComboEditor));
        style.Setters.Add(new Setter(XamComboEditor.ItemsProviderProperty, new DynamicResourceExtension("ComboItemsProvider")));
        fld.Settings.EditorStyle = style;
        fld.Settings.EditorType = typeof(XamComboEditor);

        FieldLayout fieldLayout = new FieldLayout();
        fieldLayout.Fields.Add(fld);
        this.XamDataGrid1.FieldLayouts.Add(fieldLayout);
        this.XamDataGrid1.BindToSampleData = true;
    }

    private void XamComboEditor1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

    }
}