мой ярлык не показывает содержание. что я пытаюсь сделать, так это у меня есть usercontrol TemplateForPlan, и я получаю выбранный элемент из этого usecontrol, и после этого я перехожу к следующему usercontrol и что выбранное имя шаблона должно быть там в содержании метки.Связывание метки не работает
извините за плохой описание. Я новичок и только начал работать над WPF.
<UserControl x:Class="ChaosMonkeyUI.TemplateForPlan"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="344" d:DesignWidth="424" Name="TemplateForPlanUC">
и это это метка на другой UC, чтобы показать выбранный шаблон
<Label Content="{Binding ElementName=TemplateForPlanUC, Path=selectedTemplate.TemplateName }" Grid.Row="1" Grid.Column="1" Height="28" HorizontalAlignment="Stretch"
Name="labelTemplateName" VerticalAlignment="Stretch" Margin="10,5,0,5" />
это .cs файл TemplateForPlan и
public partial class TemplateForPlan : UserControl
{
IList<TemplateType> template;
public int noOfElementSelected;
TemplateHelper xmlParser ;
NewChaosSteps parentNewChaosStepPageForNextButton;
public TemplateType selectedTemplate = null;
public TemplateForPlan(NewChaosSteps parentNewChaosStepPageForNextButton)
{
InitializeComponent();
this.parentNewChaosStepPageForNextButton = parentNewChaosStepPageForNextButton;
parentNewChaosStepPageForNextButton.EnableOrDisableNextButton("disable");
xmlParser = new TemplateHelper();
template = xmlParser.GetTemplates();
listTemplate.ItemsSource = template;
}
private void listTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
selectedTemplate = template[listTemplate.SelectedIndex];
parentNewChaosStepPageForNextButton.EnableOrDisableNextButton("enable");
}
и TemplateType определяется в других проект и его защита:
public partial class TemplateType
{
private TemplateRuleType[] templateRuleField;
private string templateNameField;
private string templateDescriptionField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("TemplateRule")]
public TemplateRuleType[] TemplateRule {
get {
return this.templateRuleField;
}
set {
this.templateRuleField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string TemplateName {
get {
return this.templateNameField;
}
set {
this.templateNameField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string TemplateDescription {
get {
return this.templateDescriptionField;
}
set {
this.templateDescriptionField = value;
}
}
}
, пожалуйста, также дайте хорошую ссылку, чтобы я мог правильно понять привязку. я очень смущен в этом.
Coul dyou добавить код класса TemplateType? Я предполагаю, что он не реализует INotifyPropertyChanged. –
Я не вижу, где вы создаете объект TemplateForPlan. Вы объявляете, что это такое, но вы не определили его или не создали дерево визуальных элементов в любом месте этого кода. Связывание в вашей метке может только обращаться к именам элементов в одном и том же визуальном дереве. Покажите больше файла, в котором вы объявили ярлык. Вам необходимо создать экземпляр объекта TemplateForPlan в том же файле, чтобы привязываться к нему. И даже тогда, чтобы привязка к работе вам нужно либо реализовать DependencyProperty, либо INotifyPropertyChanged. –
Класс TemplateType определен в другом проекте. – RATHI