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

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

當(dāng)DataTemplate為Button時(shí),ListBox項(xiàng)目返回字符串

當(dāng)DataTemplate為Button時(shí),ListBox項(xiàng)目返回字符串

C#
三國(guó)紛爭(zhēng) 2019-12-06 10:52:50
我正在創(chuàng)建WP 8.1 Silverlight應(yīng)用程序。我有一個(gè)ObservableCollection字符串名稱,它被設(shè)置到的ItemsSource的ListBox。中的按鈕名稱是哪些ListBox。然后,我想從中提取按鈕ListBox,但是返回值為type string。xaml代碼是:<ListBox x:Name="Game_ScrollViewer_online" Margin="41,104,128,6" SelectedValuePath="Current_game_button">    <ListBox.ItemTemplate>        <DataTemplate>            <Button x:Name="Current_game_button" Content="{Binding}"                     HorizontalAlignment="Center" Height="80" Margin="-14,6,-15,0"                    VerticalAlignment="Top" Width="210" Template="{StaticResource Button_CurrentLayout1}"                     RenderTransformOrigin="0.5,0.5" Foreground="#FFCBECCB" FontFamily="Times New Roman"                    Click="LoadGame_online" FontSize="16">            </Button>        </DataTemplate>    </ListBox.ItemTemplate></ListBox>然后,我想提取button元素:for (int i = 0; i < Game_ScrollViewer_online.Items.Count; i++){     var tempType = Game_ScrollViewer_online.Items[i].GetType();     Button tempBut = (Game_ScrollViewer_online.Items[i] as Button);      //Do stuff with button}但是正如所說(shuō)的,返回類型是字符串。為什么不是按鈕?有沒(méi)有辦法訪問(wèn)按鈕?
查看完整描述

1 回答

?
肥皂起泡泡

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

FrameworkTemplate.FindName Method (String,?FrameworkElement)為此,您需要:


private childItem FindVisualChild<childItem>(DependencyObject obj)

where childItem : DependencyObject

{

        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)

        {

            DependencyObject child = VisualTreeHelper.GetChild(obj, i);

            if (child != null && child is childItem)

                return (childItem)child;

            else

            {

                childItem childOfChild = FindVisualChild<childItem>(child);

                if (childOfChild != null)

                    return childOfChild;

            }

        }

        return null;

}

然后:


for (int i = 0; i < Game_ScrollViewer_online.Items.Count; i++)

{

     ListBoxItem GameListBoxItem = (ListBoxItem)(Game_ScrollViewer_online.ItemContainerGenerator.ContainerFromIndex(i));

     ContentPresenter contentPresenter = FindVisualChild<ContentPresenter>(GameListBoxItem);

     DataTemplate myDataTemplate = contentPresenter.ContentTemplate;

     Button tempBut = (Button) myDataTemplate.FindName("Current_game_button", contentPresenter);

     //Do stuff with button

}

要解決這樣的缺失FindName用法FindDescendant:


public T FindDescendant<T>(DependencyObject obj) where T : DependencyObject

{

    if (obj is T)

        return obj as T;


    int childrenCount = VisualTreeHelper.GetChildrenCount(obj);

    if (childrenCount < 1)

        return null;


    for (int i = 0; i < childrenCount; i++)

    {

        DependencyObject child = VisualTreeHelper.GetChild(obj, i);

        if (child is T)

            return child as T;

    }


    for (int i = 0; i < childrenCount; i++)

    {

        DependencyObject child = FindDescendant<T>(VisualTreeHelper.GetChild(obj, i));

        if (child != null && child is T)

            return child as T;

    }


    return null;

}


查看完整回答
反對(duì) 回復(fù) 2019-12-06
  • 1 回答
  • 0 關(guān)注
  • 410 瀏覽

添加回答

舉報(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)