2011-04-15 2 views
0

, если я добавлю элемент управления в Microsoft Blend 4 без установки имени этого элемента управления, и я хочу задать ему имя и использовать его в C# как? пример, который я добавил кнопку с помощью Blend, в моем макете, но не дать ему имя Я хочу, чтобы дать ему имя с помощью C# без x:Name="" в XAMLпереименовать управление в wpf с помощью C#

+0

может быть конкретным и добавить дополнительную информацию в ур вопрос? –

+0

У вас есть веская причина не давать контроль над именем? – Gorgen

+0

yes Я добавил расширяемый элемент управления Я получил его из codeproject, и я могу скомпилировать его, только если у всех его детей нет имени – kartal

ответ

0

Во-первых, почему в мире вы хотите сделать это?

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

например.

private void Menu_Loaded(object sender, RoutedEventArgs e) 
{ 
    (sender as Menu).Name = "MainMenu"; 
} 

Или, если элемент управления является потомком другого контроля:

(ControlStack.Children[0] as Menu).Name = "MainMenu"; 

Но я не могу думать ничего полезного, что может быть достигнуто, что ...

Вы, наверное, просто хотите получить ссылку на объект, который вы можете легко сохранить в члене класса. В некоторых случаях вы также можете нарезать свой XAML, используя ресурсы.

например.

<local:SomethingIWouldLikeToReference x:Key="SomethingIWouldLikeToReference"/> 
<local:UserControl x:Name="userControl"> 
    <Stuff> 
     <MoreStuff Content="{StaticResource SomethingIWouldLikeToReference}"/> 
    </Stuff> 
</local:UserControl> 
public MainWindow() 
{ 
    InitializeComponent(); 
    MyReference = FindResource("SomethingIWouldLikeToReference") as SomethingIWouldLikeToReference; 
} 
1

На вашем месте я бы дал LogicalTreeHelper.GetChildren (это) шанс. Он возвращает коллекцию детей в Window (это ручка Window) Ссылка MSDN
Оттуда вы можете попытаться найти свой контроль.

Но я думаю, что проще попытаться переписать элемент управления (или искать другой компонент), чтобы вы могли иметь имена у детей. Это была ваша проблема с самого начала.

Надеется, что это помогает
Gorgen

0

Примера, если у меня есть ListView Control, и я хочу, чтобы использовать его, чтобы добавить элементы и удалять элементы Сделать личное ListView и инициализировать его

ListView temp_control_List = new ListView() 

затем сделать заряженное EventHandler от Blend, поэтому он будет в VS, тогда

private void ListView_Loaded(object sender, System.Windows.RoutedEventArgs e) 
     { 
      temp_control_List = sender as ListView; 
     } 

Теперь вы можете добавлять и удалить из контроля просмотра списка из temp_control_List

Смежные вопросы