第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何動(dòng)態(tài)創(chuàng)建和修改新的Grid行元素?

如何動(dòng)態(tài)創(chuàng)建和修改新的Grid行元素?

C#
交互式愛情 2023-09-24 11:21:44
我剛剛開始一個(gè)新的 WPF 應(yīng)用程序。我有一個(gè)網(wǎng)格,想要?jiǎng)討B(tài)創(chuàng)建行(例如按按鈕),然后在該行內(nèi)創(chuàng)建 TextView/ProgressBar。我已經(jīng)搜索過如何以編程方式創(chuàng)建網(wǎng)格行。但在每個(gè)解決方案中,我都無(wú)法訪問里面的內(nèi)容,并且它變得毫無(wú)用處。<Grid x:Name="MainGrid">    <Grid.RowDefinitions>        <RowDefinition Height="Auto" />        <RowDefinition Height="*" />    </Grid.RowDefinitions>    <Button x:Name="AddLineButton" Content="Click to add a new line" Click="AddLineButton_Click"/>    <Grid x:Name="beGrid" Grid.Row="1"><!-- I need my new rows here -->    </Grid></Grid>int i = 0; //nb of rows    private void AddLineButton_Click(object sender, RoutedEventArgs e)    {        Create_line();        i++;    }    private void Create_line()    {        RowDefinition gridRow = new RowDefinition();        gridRow.Height = new GridLength(1, GridUnitType.Star);        beGrid.RowDefinitions.Add(gridRow);        StackPanel stack = new StackPanel();        stack.Orientation = Orientation.Horizontal;        TextBlock textBlock = new TextBlock();        textBlock.Text = "Question";        textBlock.Name = "Test" + i.ToString();        stack.Children.Add(textBlock);        beGrid.Children.Add(stack);        Grid.SetRow(stack, i);    }我無(wú)法訪問以前創(chuàng)建的元素?;卮鸷螅?nbsp;   private void Create_line()    {        RowDefinition gridRow = new RowDefinition();        gridRow.Height = new GridLength(1, GridUnitType.Star);        beGrid.RowDefinitions.Add(gridRow);        StackPanel stack = new StackPanel();        stack.Orientation = Orientation.Horizontal;        TextBlock textBlock = new TextBlock();        textBlock.Text = "Question";        textBlock.Name = "Test" + i.ToString();        RegisterName(textBlock.Name, textBlock);        stack.Children.Add(textBlock);        beGrid.Children.Add(stack);        Grid.SetRow(stack, i);    }獲取創(chuàng)建的 TextBlock :var text = (TextBlock)FindName("Test"+i.ToString());
查看完整描述

2 回答

?
明月笑刀無(wú)情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以將所有創(chuàng)建的 StackPanel 存儲(chǔ)在列表中。


private void AddLineButton_Click(object sender, RoutedEventArgs e)

{

    Create_line();

}


List<StackPanel> items;


private void Create_line()

{

    RowDefinition gridRow = new RowDefinition();

    gridRow.Height = new GridLength(1, GridUnitType.Star);

    beGrid.RowDefinitions.Add(gridRow);


    StackPanel stack = new StackPanel();

    stack.Orientation = Orientation.Horizontal;


    int i = items.Count + 1;

    TextBlock textBlock = new TextBlock();

    textBlock.Text = "Question";

    textBlock.Name = "Test" + i.ToString();


    stack.Children.Add(textBlock);

    beGrid.Children.Add(stack);

    Grid.SetRow(stack, items.Count);


    items.Add(stack);

}

您可以通過索引訪問任何以前的面板,例如items[0],并從Children屬性獲取元素:items[0].Children[0] as TextBlock


查看完整回答
反對(duì) 回復(fù) 2023-09-24
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

像這樣手動(dòng)創(chuàng)建控件確實(shí)不是 WPF 方式......

最好的方法是定義一個(gè)項(xiàng)目類,其中包含要顯示/編輯的每個(gè)值的屬性。

然后在窗口中創(chuàng)建ObservableCollection這些項(xiàng)目(因?yàn)槟鷮⒃趩螕舭粹o時(shí)手動(dòng)添加項(xiàng)目),并將其設(shè)置為控件ItemsSource的屬性ItemsControl。ADataTemplate用于定義精確的控件以顯示控件中的每個(gè)項(xiàng)目,該控件將綁定到該項(xiàng)目的屬性。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 2 回答
  • 0 關(guān)注
  • 142 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)