Hirdetés

Új hozzászólás Aktív témák

  • Karma

    félisten

    válasz trisztan94 #5579 üzenetére

    Gondoltam segítek még egy lépéssel, mert odáig szép és jó, hogy összeraksz egy Gridet, azt is kezelni kéne, hogy melyik gombot nyomtad meg.

    Lásd a következő kódot. A foreach ciklusban van a UI létrehozás, a körülötte egy async wrapper, illetve a legvégén másik metódusban példa, hogy hogyan lehet ezt használni.

    public Task<int> ShowMultiButtonMessageBox(string caption, string message, IList<string> buttonContent)
    {
    var i = 0;
    var tcs = new TaskCompletionSource<int>();
    var grid = new Grid { Margin = new Thickness(0,24,12,0)};

    var msgBox = new CustomMessageBox
    {
    Caption = caption,
    Message = message,
    Content = grid
    };

    foreach (var button in buttonContent.Select(content => new Button {Content = content}))
    {
    var index = i;
    grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star)});
    grid.Children.Add(button);
    Grid.SetColumn(button, i);
    button.Click += (sender, args) =>
    {
    tcs.TrySetResult(index);
    msgBox.Dismiss();
    };
    i++;
    }

    msgBox.Dismissed += (sender, args) => tcs.TrySetResult(-1);
    msgBox.Show();

    return tcs.Task;
    }

    private async void OnTestButtonClicked(object sender, RoutedEventArgs e)
    {
    var i = await ShowMultiButtonMessageBox("Test", "Press a button!", new[] {"Hello", "Szia", "Mizu"});
    MessageBox.Show(string.Format("Valasz: {0}", i));
    }

    [ Szerkesztve ]

    “All nothings are not equal.”

Új hozzászólás Aktív témák