Как отметил один из комментаторов, содержимое вашего DataTemplate не существует до тех пор, пока ContentPresenter не создаст его экземпляр для объекта данных.
Поскольку myLabel1 находится внутри DataTemplate, вы, вероятно, захотите, чтобы содержимое вашего Label былона основе любого объекта данных, который вы отображаете в вашем ContentPresenter.
Вы ничего не сказали о своем объекте данных, поэтому предположим, что данные являются экземпляром класса с именем Widget:
public class Widget
{
public string Title { get; set; }
}
Теперь код, который создает экземпляр вашего объекта данных (экземпляр Widget), может установить значение свойства Title. Например:
public MainWindow()
{
InitializeComponent();
myLabel2.Content = "new content myLabel2";
myLabel3.Content = "new content myLabel3";
Widget widgetItem = new Widget();
widgetItem.Title = "new content myLabel1";
// You could set this elsewhere, but I'm doing it here to simplify this example.
myContentPresenter.Content = widgetItem;
}
Обратите внимание, что я дал вашему ContentPresenter имя, чтобы я мог назначить его содержимое для примера:
<ContentPresenter x:Name="myContentPresenter" Grid.Row="0" ContentTemplate="{StaticResource something}" />
Затем в вашем XAML свяжите ваши меткиСвойство Content для свойства Title объекта данных:
<Window.Resources>
<DataTemplate x:Key="something">
<Label x:Name="myLabel1" Content="{Binding Title}"/>
</DataTemplate>
</Window.Resources>
Если вы хотите иметь возможность изменить значение widgetItem.Title после начальной привязки и увидеть, что это изменение отражается в пользовательском интерфейсе, тогда класс вашего объекта данных(Виджет в этом случае) должен будет реализовать INotifyPropertyChanged или наследовать DependencyObject. Я оставлю это на ваше усмотрение, чтобы расследовать это самостоятельно.