Получите конкретный UIElement из сетки в Windows Phone с помощью визуального помощника по дереву

У меня есть представление сетки на странице xaml для Windows Phone, и эта сетка содержит множество элементов пользовательского интерфейса, таких как кнопки, флажки и текстовые поля. Я хочу найти какой-то конкретный UIElement по имени из этой сетки и хочу получить значение этого UIElement, а также установить некоторые новые значения. Как я могу получить этот UIElement из этой сетки с помощью вспомогательного кода Visual Tree в коде.

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="120" />
                <RowDefinition Height="120" />
                <RowDefinition Height="120" />
                <RowDefinition Height="120" />
                <RowDefinition Height="120" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="240" />
                <ColumnDefinition Width="240" />
            </Grid.ColumnDefinitions>
            <Border BorderThickness="2" HorizontalAlignment="Left" Grid.Row="0" Grid.Column="0" Name="Border1">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image1" Tap="Image1_Tap" />
            </Border>
            <Border BorderThickness="2" BorderBrush="Transparent" HorizontalAlignment="Left" Grid.Row="1" Grid.Column="0" Name="Border2">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image2" Tap="Image2_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="0" Name="Border3">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image3" Tap="Image3_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Left" Grid.Row="3" Grid.Column="0" Name="Border4">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image4" Tap="Image4_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Left" Grid.Row="5" Grid.Column="0" Name="Border5">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image5" Tap="Image5_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Right" Grid.Row="0" Grid.Column="1" Name="Border11">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image11" Tap="Image11_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="1" Name="Border22">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image22" Tap="Image22_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Right" Grid.Row="2" Grid.Column="1" Name="Border33">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image33" Tap="Image33_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Right" Grid.Row="3" Grid.Column="1" Name="Border44">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image44" Tap="Image44_Tap" />
            </Border>
            <Border BorderThickness="2" HorizontalAlignment="Right" Grid.Row="5" Grid.Column="1" Name="Border55">
                <Image Width="110" Height="110" Stretch="Fill" Name="Image55" Tap="Image55_Tap" />
            </Border>
        </Grid>

Я хочу сопоставить варианты. Допустим, левая сторона нажимает на некоторые изображения, и их граница изменяется, и после того, как на правой стороне щелкают, какой вариант соответствует Либо левая сторона имеет какой-то выбор, либо нет


person Arslan Pervaiz    schedule 13.05.2013    source источник
comment
Для чего ты это хочешь? вы должны использовать DataBinding для всего, что вы делаете.   -  person Federico Berasategui    schedule 13.05.2013
comment
@HighCore: На самом деле мне нужно выбрать время выполнения, и мне нужно принять решение и изменить некоторые контрольные значения.   -  person Arslan Pervaiz    schedule 13.05.2013
comment
Это ИМЕННО то, о чем я говорю. Вы НЕ должны манипулировать элементами пользовательского интерфейса в коде в технологиях на основе XAML. Изучите МВВМ.   -  person Federico Berasategui    schedule 14.05.2013
comment
На самом деле я хочу получить весь элемент и хочу манипулировать изменениями пользовательского интерфейса, и спасибо за ваше предложение. Я знаю MVVM, MVVM не помогает в моем конкретном случае. Если знаешь, то скажи иначе, пожалуйста   -  person Arslan Pervaiz    schedule 14.05.2013
comment
Каково ваше конкретное состояние? Опубликуйте соответствующий XAML и скриншот того, что вам нужно.   -  person Federico Berasategui    schedule 14.05.2013
comment
Готово добавлено условие и опубликовано XAML   -  person Arslan Pervaiz    schedule 14.05.2013
comment
Вы обязательно должны удалить все это и вместо этого использовать ItemsControl.   -  person Federico Berasategui    schedule 14.05.2013
comment
давайте продолжим это обсуждение в чате   -  person Arslan Pervaiz    schedule 14.05.2013


Ответы (1)


Не подскажете, что именно вы хотите получить из элементов сетки, ведь внутри только Borders и Images. Вы можете найти элементы с помощью этого общего кодирования. (ContentPanel — это имя вашей сетки). Вы можете получить имя границ и изображения и других элементов управления, а также другие свойства, выполнив следующую процедуру.

 foreach (var child in ContentPanel.Children)
        {
            if (child is Border)
            {
                var borderName = (child as Border).Name;

                // if you wana get the image inside border, then do this.
                var getBorderChlid = (item as Border).Child;
                if (getBorderChlid is Image)
                {
                    var getImgName = (getBorderChlid as Image).Name;
                }

            }
        }

Если это поможет вам, тогда хорошо, в противном случае объясните свой квест немного больше, тогда я вышлю вам точный код ИншаАллах.

person Zia Ur Rahman    schedule 25.10.2015
comment
@ZiaUrRehman: Если вы можете разобраться в моем вопросе, это было в 2013 году, когда я запустил WP7. Я сделал это в то время. В любом случае большое спасибо за ответ - person Arslan Pervaiz; 26.10.2015
comment
Ой! извините ... я не видел дату сообщения. :) :) :) :) - person Zia Ur Rahman; 26.10.2015