kartal
kartal

Reputation: 18096

rename control in wpf using c#

if I add control in Microsoft Blend 4 without set Name to this control and I want to set name to it and use it in c# how ? example I added button using Blend in my layout but without give it a name I want to give it a name using c# without x:Name="" in xaml

Upvotes: 0

Views: 1108

Answers (3)

kartal
kartal

Reputation: 18096

Example if I have ListView Control and I want to use it to add items and remove items Make private ListView and initialize it

ListView temp_control_List = new ListView()

then make loaded Eventhandler from Blend so it will be in VS then

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

Now you can add and remove to and from the list view control from temp_control_List

Upvotes: 0

brunnerh
brunnerh

Reputation: 185553

First, why in the world would you want to do that?

If you do not set a name you have no easy way of accessing the control. However you can get access to the control via relationships to other controls or events that pass a reference, for example the loaded event.

e.g.

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

Or if the control is the child of another control:

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

But i cannot think of anything useful that could be achieved by that...

You probably just want to get a reference to the object which you can easily store in a class member. In some cases you can also slice up your XAML using resources.

e.g.

<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;
}

Upvotes: 0

user376591
user376591

Reputation:

In your place I would give LogicalTreeHelper.GetChildren (this) a chance. It returns a collection of children to Window (this is a handle to Window) Reference MSDN
From there you can try to find your control.

But I think it is easier to try to rewrite the control (or look for another component) so you can have names on the children. That was your problem from the start.

Hope it helps
Gorgen

Upvotes: 1

Related Questions