Я что-то упускаю из-за того, что должно быть прямым связыванием, и я надеюсь, что кто-то может указать мне правильное направление.
У меня есть приложение SL, которое имеет модель представления с именем PeopleView Model, которая содержит число или свойства для человека (имя и т. Д.)
страница состоит из пользовательского элемента управления, текстового поля и вида сетки
Код пользователя
<frm:LabelFieldContainer Width="145"
Height="42"
Margin="12,12,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
MyContent="{Binding FirstName}"
MyLabel="{StaticResource lblFirstName}" />
<frm:LabelFieldContainer Width="178"
Height="42"
Margin="166,12,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
MyContent="{Binding LastName}"
MyLabel="{StaticResource lblLastName}" />
</Grid>
этот контейнер состоит из другого пользовательского элемента управления, который связывается со словарем ресурсов, чтобы получить имя метки, а затем поле содержимого, которое должно быть привязано к свойству, возвращенному из моей модели представления (MyContent). цель здесь состояла в том, чтобы создать общий элемент управления, который отображал бы название метки и значение из коллекции. то есть. Имя: Джон. В настоящее время метка работает в привязке к словарю ресурсов, но привязка для значения (MyContent) ничего не возвращает.
Вот xaml для MainPage.xaml
<Grid x:Name="LayoutRoot" Background="White">
<uc:AddressContainer />
<TextBlock Width="200"
Height="50"
Margin="101,71,99,179"
FontSize="12"
Foreground="Black"
Text="{Binding LastName}" />
<telerik:RadGridView Name="GridView1" Margin="0,140,0,6"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AutoGenerateColumns="True"
IsFilteringAllowed="True">
</telerik:RadGridView>
и код для mainpage.xaml -
public partial class MainPage : UserControl
{
//binding of view model to user control
public PeopleViewModel PeopleView
{
get { return (PeopleViewModel)GetValue(PeopleViewProperty); }
set { SetValue(PeopleViewProperty, value); }
}
// Using a DependencyProperty as the backing store for PeopleView. This enables animation, styling, binding, etc...
public static readonly DependencyProperty PeopleViewProperty =
DependencyProperty.Register("PeopleView", typeof(PeopleViewModel), typeof(MainPage), new PropertyMetadata(new PeopleViewModel()));
public MainPage()
{
InitializeComponent();
this.LayoutRoot.DataContext = PeopleView.AllPeople; //tried this but no luck
this.GridView1.ItemsSource = PeopleView.AllPeople; //bound to a grid view for testing returns
}
Я вставил сетку только для тестирования, и она прекрасно возвращает значения. Однако я попытался привязать DataContext основного представления к коллекции, чтобы затем заполнить связанные поля либо в пользовательском контроле, либо в тестовом текстовом блоке, который я добавил на главной странице.
Может ли кто-нибудь указать мне правильное направление относительно того, как правильно связать UIElements с коллекцией за пределами ItemsSource. Я всегда делал это для сеток или элементов списка без каких-либо проблем, но теперь, пытаясь представить что-то (отдельное поле в пользовательском интерфейсе), я застреваю.
UPDATE:
После короткого умственного перерыва я установил связь, так как я связывал коллекцию, я поместил бы usercontrol в список, вот обновленная главная страница xaml
<Grid x:Name="LayoutRoot" Background="White">
<ListBox ItemsSource="{Binding}" Margin="0,0,0,166">
<ListBox.ItemTemplate>
<DataTemplate>
<uc:AddressContainer />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<telerik:RadGridView Name="GridView1" Margin="0,140,0,6"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AutoGenerateColumns="True"
IsFilteringAllowed="True">
</telerik:RadGridView>
и я обновил контекст данных в файле mainpage.xaml.cs до
public MainPage()
{
InitializeComponent();
this.DataContext = PeopleView.AllPeople; //updated here
}
Я получаю точный возврат записей (2) в поле списка, однако в пользовательском элементе управления (поля содержимого) по-прежнему не выполняется привязка для отображения значений, возвращаемых в коллекции
Любые указатели все равно будут оценены.