我厌倦了 Windows 窗体......我只是。我不想就此展开辩论,我只是对此感到厌烦。不幸的是,我们已经依赖于 DevExpress XtraEditors 中的 4 个控件。 I
和他们一起遇到了困难,我想继续前进。
我现在需要的是我正在使用的 4 个控件的壁橱更换。他们来了:LookUpEdit
- 这是一个 combobox
在您键入时过滤下拉列表。MemoExEdit
- 这是一个 textbox
当它有焦点时“弹出”一个更大的区域CheckedComboBoxEdit
- 这是 checkboxes
的下拉列表.CheckedListBoxControl
- 这是一个很好的专栏 listbox
的 checkboxes
这是一个具有大量数据输入的 LOB 应用程序。实际上,前两个很好,但不是必需的。后两个是必不可少的,因为我需要复制功能或更改用户与特定数据交互的方式。
我正在寻求帮助以在 中复制这些内容。 WPF
具有现有控件(codeplex 等)或直接 XAML
的环境.任何代码或方向将不胜感激,但主要是我希望避免任何商业 3rd 方 WPF,而是希望专注于自己构建它们(但我需要方向)或使用 Codeplex
最佳答案
WPF 的一大优点是自定义控件非常容易(尤其是与 WinForms 相比)。根据您给出的描述,所有这些控件都可以使用标准工具箱控件非常简单地创建;我认为您不需要购买任何第三方解决方案。从顶部开始:
LookUpEdit
- 您可以使用 WPF 组合框 MemoExEdit
- 使用标准 TextBox
控制和Popup
原始的,你可以用相对较少的努力复制这个效果CheckedComboBoxEdit
- WPF ComboBox
是 ItemsControl
,这意味着它支持自定义项目模板。您可以使用几行 XAML 轻松完成此操作。 CheckedListBoxControl
- ListBox
也是如此, 使用 ItemTemplate
属性(property),您可以立即进行。 下面是一个快速示例,说明如何实现类似于
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;
}
}
现在,
Window
的 XAML :<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
中的每个项目ComboBox
的集合, 一个 CheckBox
生成,其Content
绑定(bind)到 Name
您的项目类别的属性及其 IsChecked
绑定(bind)到 Checked
的属性属性(property)。这是最终结果:
alt text http://img155.imageshack.us/img155/9379/customcontrols.png
关于.net - 需要更换第 3 方 WinForm 控件,壁橱 WPF 等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2724137/