内容视图绑定无效

时间:2017-12-13 05:38:53

标签: forms xamarin

I have ContentView which need ViewModel binding

Test.xaml

<ContentView.Content>  
 <Frame x:Name="HelpBaseFrame" BackgroundColor="White" CornerRadius="16" HorizontalOptions="Fill" VerticalOptions="Center">
                <StackLayout>
                 <ListView HasUnevenRows="True" x:Name="lstview" SeparatorColor="White">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <ViewCell IsEnabled="False">
                                    <ScrollView x:Name="ScrollView" Orientation="Vertical" Padding="0, 1, 0, 0" BackgroundColor="Transparent" HorizontalOptions="Center">
                                        <StackLayout>
                                            <Label x:Name="LabelHeader" FontAttributes="Bold" Font="HiraginoSans-W6, 16" 
                                                HorizontalOptions="Center" Margin="0,20,0,0">
                                                <Label.Text>
                                                    <Binding Path="HeaderData"></Binding>
                                                </Label.Text>
                                            </Label>
                                            <local:LineSpacingLabel x:Name="LabelHeaderDesceiption" LineSpacing="6"
                                                Font="HiraginoSans-W3, 16" FontAttributes="None" Margin="0,20,0,0">
                                                <Label.Text>
                                                    <Binding Path="DescriptionData"></Binding>
                                                </Label.Text>
                                            </local:LineSpacingLabel>
                                        </StackLayout>
                                    </ScrollView>
                                </ViewCell>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>                  
            </StackLayout>
            </Frame>
</ContentView.Content>

BindingClass

public void SetData(Dictionary<string, string> dictionary)
    {
         ............
        lstview.ItemsSource = HelpDataList;  // HelpDataList is observable collection of HElp Data        
    }

模特课:

public class HelpData : BaseViewModel
    {
        private string Header = string.Empty;
        private string Description = string.Empty;

        public string HeaderData
        {
            get { return Header; }
            set
            {
                Header = value;
                OnPropertyChanged("HeaderData");
            }               
        }
        public string DescriptionData { get; set; }
    }

以上视图的此视图模型。  此绑定无效。  有什么问题吗?  以上视图的此视图模型。  此绑定无效。  有什么问题吗?  以上视图的此视图模型。  此绑定无效。  有什么不对吗?

1 个答案:

答案 0 :(得分:0)

  1. 您必须使用bindingContext标记扩展名在目标控件上设置x:Reference

    BindingContext="{x:Reference Name=ViewModelField}"
    

    BindingContext="{x:Reference ViewModelField}"
    
  2. Label.Text应与string而非viewModel绑定。

    Text="{Binding Path=Value}" 
    

    或者

    Text="{Binding Value}"  ( “Path=” part of the markup extension can be omitted if the path is the first item in the Binding markup extension)
    
  3. 请参阅Bindings

    更新

    <Binding>不是有效标记。

    修改标签:

    <Label Text="{Binding Path = HeaderData}">