Saya sedang mengembangkan daftar yang harus dilakukan UWP.

Saya memiliki dua panel tumpukan berdampingan.

<Grid x:Name="MainGrid" Background="Transparent">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition  />
        <RowDefinition  />
        <RowDefinition MaxHeight="65"/>
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0" Grid.ColumnSpan="2" >
        <TextBlock Margin="10" FontSize="30">Please enter in an item you wish to complete</TextBlock>
        <StackPanel Orientation="Horizontal">
            <TextBox MinWidth="200" Name="Input"></TextBox>
            <Button Margin="10" Click="ButtonAdd_Click">Add</Button>
        </StackPanel>
        <TextBlock Margin="10" FontSize="30">Below are the Items you need to complete</TextBlock>
    </StackPanel>

    <StackPanel x:Name="outputArea" Grid.Column="0" Grid.Row="1" >

    </StackPanel>

    <StackPanel x:Name="completedList" Grid.Column="1" Grid.Row="1">

    </StackPanel>
    <Button Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left"  Click="ButtonSettings_Click">Settings</Button>
    <Button Grid.Column="1" Grid.Row="2" HorizontalAlignment="Right"  Click="ButtonClear_Click">Clear done</Button>
</Grid>
</Page>

Stackpanel outputArea berisi teks yang telah dimasukkan pengguna.
kode C#

private void ButtonAdd_Click(object sender, RoutedEventArgs e)
    {
        StackPanel sp = new StackPanel(); ;
        TextBox textbox = new TextBox();
        textbox.Text += Input.Text;
        textbox.IsReadOnly = true;
        CheckBox done = new CheckBox();
        done.Content = "check when done";
        done.Checked += Done_Checked;

        sp.Orientation = Orientation.Horizontal;
        sp.Children.Add(textbox);
        sp.Children.Add(done);



        outputArea.Children.Add(sp);

    }

Kode ini mendapat input dari kotak teks dan mengeluarkannya ke area output Masalah saya adalah saya mencoba memindahkan teks dari Area output ke Daftar yang sudah selesai ketika kotak centang dicentang. Saya telah mencoba yang berikut di bawah ini

 private void Done_Checked(object sender, RoutedEventArgs e)
    {
        // find the parent horiz sp, and move it.
        TextBox textbox = new TextBox();

        textbox.Text += textbox.Text;
        textbox.IsReadOnly = true;
        StackPanel stackpanel = new StackPanel();

        stackpanel.Orientation = Orientation.Horizontal;

        stackpanel.Children.Add(textbox);

    }

Terima kasih sebelumnya.

0
Ross Heaney 15 Desember 2017, 13:24

1 menjawab

Jawaban Terbaik

Ini akan bekerja:

private void Done_Checked(object sender, RoutedEventArgs e)
{
    StackPanel sp = (StackPanel)VisualTreeHelper.GetParent((CheckBox)sender);

    outputArea.Children.Remove(sp);
    completedList.Children.Add(sp);

}
0
Marian Dolinský 15 Desember 2017, 18:39