How to get this image control from TabItem.Header?

54 Views Asked by At

I'm trying to access an image from a DockPanel inside a TabItem.Header to set it's Visibility (however I can't use MVVM approach in this case and binding concept). I would like to update its property in C# Code.

How can I do this?

C# Code :

public T GetVisualChild<T>(DependencyObject parent) where T : Visual
{
    T child = default(T);
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < numVisuals; i++)
    {
        Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
        child = v as T;
        if (child == null)
        {
            child = GetVisualChild<T>(v);
        }
        if (child != null)
        {
            break;
        }
    }
    return child;
}
// Method Call
var TaskTabItem = new TabItem();
TaskTabItem = MainWindow.SelectedItem as TabItem;
var dockpanel = GetVisualChild<DockPanel>((DockPanel)TaskTabItem.Header);
Image img = (Image) dockpanel.Children[0];
img.Visibility = Visibility.Visible;

Xaml Code:

<TabItem x:Name="MyTab" >
    <TabItem.Header>
        <DockPanel x:Name="TabHeaderPanel">
            <Image x:Name="TabIcon" Source="../icons/icon1.png" Visibility="Collapsed"/>
            <TextBlock Text="Home Page"/>
        </DockPanel>
    </TabItem.Header>
</TabItem>
0

There are 0 best solutions below