代码之家  ›  专栏  ›  技术社区  ›  Nick

将多个文本框绑定到WPF中的一个结构

  •  0
  • Nick  · 技术社区  · 15 年前

    如何将两个文本框对象绑定到 System.Windows.Size 结构 ? 绑定只需朝这个方向工作:

    (textbox 1.text+textbox 2.text)=>(大小)

    用户在UI上的文本框中插入宽度和高度后,应创建大小对象。

    XAML:

    <TextBox Name="textBox_Width" Text="{Binding ???}" />
    <TextBox Name="textBox_Height" Text="{Binding ???}" />
    

    C:

    private Size size
    {
      get;
      set;
    }
    

    有简单的方法吗?

    编辑: 大小是一个结构!因此“someobject.size.width=123”不起作用。我需要调用大小构造函数并设置someobject.size=newSize

    2 回复  |  直到 13 年前
        1
  •  3
  •   deepcode.co.uk    15 年前

    不能只公开模型的两个属性-宽度和高度,以及大小属性。宽度和高度将出现在绑定表达式中,然后当您想要获得大小属性时,它将基于这两个字段进行初始化。

    你的模特可能是这样的;

    public class MyModel
    {
        public int Width{ get; set; }
        public int Height{ get; set; }
    
        public Size Size{ get{ return new Size( Width, Height ); }}
    };
    

    希望这有帮助。

    托尼

        2
  •  0
  •   Tim Cooper    13 年前

    Windows 1.xAML.CS :

    public partial class Window1 : Window
    {
        public static readonly DependencyProperty SizeProperty = DependencyProperty.Register("Size",
            typeof(Size),
            typeof(Window1));
    
        public Size Size
        {
            get { return (Size)GetValue(SizeProperty); }
            set { SetValue(SizeProperty, value); }
        }
    
        public Window1()
        {
            InitializeComponent();
            DataContext = this;
            _button.Click += new RoutedEventHandler(_button_Click);
        }
    
        void _button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(Size.ToString());
        }
    }
    

    Windows 1.xAML :

    <Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <StackPanel>
            <TextBox Text="{Binding Size.Width}"/>
            <TextBox Text="{Binding Size.Height}"/>
            <Button x:Name="_button">Show Size</Button>
        </StackPanel>
    </Window>