【问题标题】:Bind multiple TextBoxes to one struct in WPF将多个文本框绑定到 WPF 中的一个结构
【发布时间】:2010-10-20 03:42:51
【问题描述】:

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

(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

【问题讨论】:

    标签: c# wpf data-binding binding struct


    【解决方案1】:

    您能不能只公开 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 ); }}
    };
    

    希望这会有所帮助。

    托尼

    【讨论】:

      【解决方案2】:

      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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-27
        相关资源
        最近更新 更多