Есть некоторые проблемы, которые нужно исправить. Прежде всего вы должны привязать элементы из вашей ViewModel, а не из кода позади. В вашей ViewModel реализуйте интерфейс INotifyPropertyChanged. Это должно выглядеть так:
public class YourViewModel: INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection <MyDataRow> rows;
public ObservableCollection<MyDataRow> Rows
{
get {return rows;}
set {
Rows = value;
NotifyPropertyChanged("Rows");
}
}
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
....
}
В вашем компоненте вы должны создать свойство зависимости:
public string MyDataRow
{
get { return (string)GetValue(MyDataRowProperty); }
set { SetValue(MyDataRowProperty, value); }
}
public static readonly DependencyProperty MyDataRowProperty = DependencyProperty.Register("MyDataRow", typeof(string), typeof(MyControl));
После этого в коде вашего View задайте текстовый текст данных, затем вы можете связать его в xaml.
<ListView x:Name="listView" ItemsSource="{Binding Rows}">
<ListView.ItemTemplate>
<DataTemplate>
<Controls:DetailItemControl Height="105" Width="400" MyDataRow="{Binding Description}"></Controls:DetailItemControl>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Надеюсь, это поможет. Не стейсняйся спросить. Я не запускал этот код, поэтому проверьте синтаксис, но идея есть.
Кристоф