Первая часть ответа - это FindName () метод.
пример:
DataTemplate tmplt = FindResource("TestTemplate") as DataTemplate;
TextBox my = (TextBox)tmplt.FindName("txtBox");
попробуйте это, это должно помочь получить доступ к TextBox
элементу управления.Я думаю, что вы знаете, как связать с.Если вы хотите, чтобы привязка данных велась иначе, используйте MultiBinding
и Converter
.
РЕДАКТИРОВАТЬ
public class GeneralObject
{
private object someObject;
public GeneralObject(object initObject)
{
this.someObject = initObject;
}
//If you want to bind to some text, for example
public string Text
{
get
{
//I think you know which objects are coming as input
if (this.someObject is SpecialClass1)
return ((SpecialClass1)this.someObject).SpecialClass1TextProperty;
if (this.someObject is SpecialClass2)
return ((SpecialClass2)this.someObject).SpecialClass2TextProperty;
//and so on.
}
}
}
РЕДАКТИРОВАТЬ 2 Еще одинВозможный путь
Так что я помню, что у WPF есть ContentControl
!
<ContentControl Content="{Binding Path=CurrentObject}"/>
Но в этом случае вам нужно создать число DataTemplate
, каждый Template
для одного класса.
<DataTemplate DataType="{x:Type local:SpecialClass1}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type local:SpecialClass2}">
...
</DataTemplate>
<!--and so on-->
Разрешение WPF DataTypes
из ContentControl.Content
собственности, и положить на ContentControl
право DataTemplate
.