2014-10-09 72 views
0

我有一个模型Model1,属性为List<Model2> model2;绑定到模型的列表元素的属性

Model1.cs

//Other Properties 
public List<Model2> model2List {get; set;} 

而在Model2我有这个属性Model3 model3;

Model2.cs

// Other Properties 
public Model3 model3 {get; set;} 

Model3.cs

// Other Properties 
public string Name {get; set;} 

现在我已经两个用户控件View1View2View2View1

定义View1.xaml用户控件

<Grid x:Name="LayoutRoot"> 
    <!-- Some properties here bind to those of model1 and model2 --> 
    <views:View2 Name="view2"></views:View2> 
</Grid> 

View2.xaml用户控件

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}"> 
     <phone:LongListSelector 
      ItemsSource="{Binding Path=model3, Mode=OneWay}"> 
      <phone:LongListSelector.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <Border 
          BorderBrush="{StaticResource PhoneBackgroundBrush}" 
          BorderThickness="3" 
          Margin="0,12"> 
          <Grid> 
          <TextBlock Text={Binding Path=Name, Mode=OneWay}> 
          </TextBlock> 
         </Border> 
         <views:View3 Name="view3"> 
         </views:View3> 
        </StackPanel> 
       </DataTemplate> 
      </phone:LongListSelector.ItemTemplate> 
     </phone:LongListSelector>  
</Grid> 

我想将View2.xaml中的T​​extBlock绑定到属性名称Model3。从我的CS我设置的DataContext作为

view2.DataContext = model1Object.model2List;

似乎并不奏效。此外,我需要将view2中定义的view3中的控件与model3的属性绑定。我知道这看起来太混乱了,但我被卡住了。帮帮我!

+0

这个问题还不清楚。 – 2014-10-09 10:55:20

+0

@EldarDordzhiev检查现在是否有意义。 – PratPor 2014-10-09 11:09:14

+0

把你的完整xaml – MatDev8 2014-10-09 11:54:19

回答

0

那些不属性。这些是字段。你不能绑定到字段。

通过使用自动属性定义将您的字段更改为属性。

public Model3 Model3 {get;set;} // PascalCase for property names, thx 

这可能不是唯一的问题,但它试图与字段绑定绝对不正确。

+0

看起来这些字段是私人的。考虑使用公众的知名度:) – 2014-10-09 15:40:37

+0

@EldarDordzhiev oops! – Will 2014-10-09 16:32:23

+0

这些实际上是属性。我编辑了这个问题。帮帮我。 – PratPor 2014-10-10 06:52:03