将多个TextBox绑定到WPF中的一个结构

时间:2009-04-17 16:26:37

标签: c# wpf data-binding binding struct

如何将两个TextBox对象绑定到System.Windows.Size 结构? 绑定只需要在这个方向上工作:

(textBox1.Text + textBox2.Text)=> (大小)

用户在UI上的TextBoxes中插入宽度和高度后,应该创建Size对象。

XAML:

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

C#:

private Size size
{
  get;
  set;
}

有一种简单的方法吗?

编辑:尺寸是结构!因此“someObject.Size.Width = 123”不起作用。我需要调用Size-Constructor并设置someObject.Size = newSize

2 个答案:

答案 0 :(得分:3)

你能不能只公开你的模型中的2个属性 - 宽度和高度,以及size属性。宽度和高度将出现在{Binding}表达式中,然后当您想要获取size属性时,它会根据这两个字段进行初始化。

例如,您的模型可能类似于;

public class MyModel
{
    public int Width{ get; set; }
    public int Height{ get; set; }

    public Size Size{ get{ return new Size( Width, Height ); }}
};

希望这有帮助。

答案 1 :(得分:0)

Window1.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());
    }
}

Window1.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>