2010-04-27 102 views
4

我厭倦了Windows窗體......我只是。我並不是試圖就此開始辯論,我只是無聊而已。不幸的是,我們已經依賴於DevExpress XtraEditors中的4個控件。 I除了與他們有困難,我想繼續前進。需要替換第三方WinForm控件,最適合的WPF等價物是什麼?

我現在需要的是我正在使用的4個控件的壁櫥更換。它們是:

LookUpEdit - 這是一個combobox,它可以在您鍵入時過濾下拉列表。

MemoExEdit - 這是一個textbox是 '彈出' 一個更大的區域,當它具有焦點

CheckedComboBoxEdit - 這是checkboxes下拉。

CheckedListBoxControl - 這是一個很好的過柱listboxcheckboxes

這是有大量數據錄入的LOB應用程序。實際上,前兩個很好,但不是必需的。其次是必不可少的,因爲我需要複製功能或改變用戶與特定數據交互的方式。

我在一個WPF環境與現有控制複製這些尋求幫助(的CodePlex等)或直XAML。任何代碼或方向將不勝感激,但主要是我希望能避免任何商業第三方WPF而會希望把重點放在建立他們自己(但我需要方向)或使用Codeplex

回答

9

一個美麗的事物關於WPF是自定義控件是多麼容易(尤其是與WinForms相比)。根據您給出的描述,所有這些控件都可以通過標準工具箱控件簡單創建。我認爲您不需要購買任何第三方解決方案。從頂部開始:

  1. LookUpEdit - 你可以得到這個免費使用WPF組合框
  2. MemoExEdit - 使用標準TextBox控制和Popup原始的,你可以重複使用相對較少的努力
  3. 這個效果
  4. CheckedComboBoxEdit - WPF ComboBoxItemsControl,這意味着它支持自定義項目模板。您可以使用幾行XAML輕鬆完成此操作。
  5. CheckedListBoxControl - 與ListBox同樣的事情,使用ItemTemplate屬性,您可以立即獲得此功能。

下面是一個如何實現類似於CheckedComboBoxEdit的控件的快速示例。首先,代碼隱藏:

public partial class CustomControls : Window 
{ 
    public ObservableCollection<CustomItem> Items 
    { 
     get; 
     set; 
    } 

    public CustomControls() 
    { 
     Items = new ObservableCollection<CustomItem>(); 
     Items.Add(new CustomItem() { Name = "Item 1", Checked = true }); 
     Items.Add(new CustomItem() { Name = "Item 2", Checked = false }); 
     Items.Add(new CustomItem() { Name = "Item 3", Checked = false }); 

     InitializeComponent(); 
    } 
} 

public class CustomItem 
{ 
    public bool Checked 
    { 
     get; 
     set; 
    } 

    public string Name 
    { 
     get; 
     set; 
    } 
} 

現在,XAML爲Window

<Window x:Class="TestWpfApplication.CustomControls" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="CustomControls" Height="200" Width="200" 
DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
<ComboBox ItemsSource="{Binding Items}" 
      VerticalAlignment="Center" 
      HorizontalAlignment="Center" 
      Width="100"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <CheckBox Content="{Binding Name}" 
         IsChecked="{Binding Checked}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

什麼ItemTemplate物業說的是,「在這個控制每個項目,讓我其中之一。」因此,對於的Items集合中的每個項目,將生成一個CheckBox,其Content綁定到您的物品類的Name屬性,並將其IsChecked屬性綁定到Checked屬性。

這裏是最終的結果:

alt text http://img155.imageshack.us/img155/9379/customcontrols.png

+0

真的,哇,這將是令人難以置信的...'項目Templates'是我一直看到提到的,似乎我應該尋找到它。我將不得不穀歌周圍。我猜測這是你用來創建所有「複合」控制的東西? – 2010-04-27 19:19:05

+0

因爲WPF有一個動態內容模型(你可以在任何地方填充任何類型的內容),所以複合控件是它擅長的一個領域。是的,項目模板是實現這一點的一種常用方法。 – Charlie 2010-04-27 19:26:12

+0

那麼這一切都將在我將在WPF應用程序中引用的CustomControlLibrary中?對不起,新問題,但談到WPF,我是... – 2010-04-27 19:56:36

相關問題