如何将两个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
答案 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>