using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
public class KeyValueControl : Control
{
public static readonly DependencyProperty KeyProperty = DependencyProperty.Register(
"Key",
typeof(string),
typeof(KeyValueControl),
new PropertyMetadata(default(string)));
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
"Value",
typeof(object),
typeof(KeyValueControl),
new FrameworkPropertyMetadata
{
DefaultValue = null,
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
});
static KeyValueControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(KeyValueControl), new FrameworkPropertyMetadata(typeof(KeyValueControl)));
}
public string Key
{
get
{
return (string)GetValue(KeyProperty);
}
set
{
SetValue(KeyProperty, value);
}
}
public object Value
{
get
{
return GetValue(ValueProperty);
}
set
{
SetValue(ValueProperty, value);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace YourProject
{
/// <summary>
/// Interaction logic for LabelTextBox.xaml
/// </summary>
public partial class LabelTextBox : UserControl
{
public LabelTextBox()
{
InitializeComponent();
}
string LocalLabel = "";
string LocalTextBox = "";
public string Label
{
get { return LocalLabel; }
set
{
LocalLabel = value;
BaseLabel.Content = value;
}
}
public string TextBox
{
get { return LocalTextBox; }
set
{
LocalTextBox = value;
BaseTextBox.Text = value;
}
}
}
}
6条答案
按热度按时间wyyhbhjk1#
下面是一个执行此操作的控件:
款式:
用法(创建属性网格):
iszxjhcz2#
这实际上取决于您将来要如何处理这些控件。如果您要多次重用此类控件(并且可能在运行中创建它),最好创建UserControl并对其进行编程。然后,您可以以非常简单的方式轻松地重用它(例如在StackPanel上放置)。
标签文本框.xaml的代码
LabelTextBox.xaml.cs的程式码
您可以使用新控件的Label和TextBox属性(隐藏在设计工具中[属性]的[其他]部分)来变更Label文字和TextBox内容。您也可以为UserControl撰写其他函式。
如果您不太需要重复使用这些控件,其他解决方案也足够了。
5uzkadbs3#
如果您希望灵活地操作此文本标签结构,我建议将每个TextBox和Label Package 在停靠面板中,并将对接设置为将应用于所有标签和文本框的样式。
就像是
4sup72z84#
我通常会这样做:
如果你经常这样做,你可以创建一个UserControl或Datatemplate。
ctehm74n5#
我用这个
还有
nfs0ujit6#
创建一个类X,用于保存实现INotifyPropertyChanged的标签和文本。创建一个ObservableCollection。这将是ListBox、ComboBox、StackPanel ......以及您所选择的任何对象的ItemsSource。创建一个DataTemplate,用于按照您希望的方式显示X。