2009-04-17 4 views
0

Wie binde ich zwei TextBox-Objekte an eine System.Windows.SizeStruktur? Die Bindung nur in dieser Richtung zu arbeiten hat:Mehrere TextBoxen an eine Struktur in WPF binden

(textBox1.Text TextBox2.Text +) => (Größe)

Nach einem Benutzer die Breite und Höhe in die Textfelder auf der Benutzeroberfläche die Größe des Objekts sollte erstellt werden.

XAML:

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

C#:

private Size size 
{ 
    get; 
    set; 
} 

Gibt es eine einfache Möglichkeit, dies zu tun?

Bearbeiten: Größe ist eine Struktur! Daher funktioniert "someObject.Size.Width = 123" nicht. Ich brauche die Größe-Konstruktor aufrufen und einstellen someObject.Size = newSize

Antwort

3

Könnten Sie nicht Legen Sie einfach zwei Eigenschaften - Breite und Höhe - Ihres Modells sowie eine Größeneigenschaft frei. Die Breite und Höhe würden in Ihren {Binding} -Ausdrücken angezeigt. Wenn Sie dann die Size-Eigenschaft abrufen möchten, wird sie basierend auf diesen beiden Feldern initialisiert.

ZB könnte Ihr Modell etwas wie sein;

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

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

Hoffe, das hilft.

Tony

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>