Binde flere tekstbokser til en struct i WPF

stemmer
0

Hvordan kan jeg binde to TextBox gjenstander til en System.Windows.Size struct ? Bindingen har bare til å arbeide i denne retning:

(TextBox1.Text + textBox2.Text) => (Size)

Når en bruker setter inn bredde og høyde i tekstboksene i brukergrensesnittet størrelsen gjenstanden skal opprettes.

XAML:

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

C #:

private Size size
{
  get;
  set;
}

Er det en enkel måte å gjøre dette?

Edit: Størrelse er en struct! Derfor someObject.Size.Width = 123 ikke fungerer. Jeg må ringe Size-Constructor og sette someObject.Size = newSize

Publisert på 17/04/2009 klokken 16:26
kilden bruker
På andre språk...                            


2 svar

stemmer
3

Kan du ikke bare utsetter 2 egenskaper - bredde og høyde fra din modell, sammen med en størrelse eiendom. Bredden og høyden vil vises i {Binding} uttrykk, og når du ønsker å få den størrelsen eiendom, initialiserer den basert på disse to feltene.

Eg, modellen kan være noe sånt som;

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

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

Håper dette hjelper.

Tony

Svarte 17/04/2009 kl. 21:59
kilden bruker

stemmer
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>
Svarte 17/04/2009 kl. 16:34
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more