Xamarin.forms: Xamarin рдкреНрд░рдкрддреНрд░ рд╕рд╛рдордЧреНрд░реА рджреГрд╢реНрдп (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг) ListView рдХреЗ рдЕрдВрджрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдордИ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: xamarin/Xamarin.Forms

рд╡рд┐рд╡рд░рдг

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЪрдпрди рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рд╣реИред рд▓рд┐рд╕реНрдЯрд╡реНрдпреВ рдореЗрдВ рдПрдХ рд▓реЗрдмрд▓ рдФрд░ рдПрдХ рдХрдВрдЯреЗрдВрдЯ рд╡реНрдпреВ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ)ред рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрдЯрди рд╣реИ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдРрдк рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЬреЗрдирд░реЗрдЯ рдбреЗрдЯрд╛ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд▓реЗрдмрд▓ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдВрдЯ рд╡реНрдпреВ рдирд╣реАрдВред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

  1. рд╡реАрдПрд╕ 2017 рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдЬрд╝рд╛рдорд░реАрди рдлреЙрд░реНрдо рд░рд┐рдХреНрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ (рдорд╛рдирдХ)
  2. MainPage.xaml рдореЗрдВ рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рд╕реВрдЪреАрджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдПрдХ StackLayout рд░рдЦреЗрдВ
  3. Listview рдХреЗ DataTemplate рдХреЛ ViewCell рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓реЗрдмрд▓ рдФрд░ рдПрдХ ContentView рд╣реИ (рд╣рдо рдЗрд╕реЗ рдиреАрдЪреЗ рдмрдирд╛рдПрдВрдЧреЗ)ред рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЛрд▓реЗрдХреНрд╢рди рдЖрдЗрдЯрдо рд╕реЗ рдмрд╛рдВрдзреЗрдВред
  4. MainPage.xaml.cs рдореЗрдВ рдПрдХ рдСрдмреНрдЬрд░реНрд╡рд▓рдмреЗ рдмрдирд╛рдПрдВрд╕рдВрдкрддреНрддрд┐
  5. рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХреБрдЫ рд░реИрдВрдбрдо рд╡реИрд▓реНрдпреВ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХрд▓реЗрдХреНрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВред
  6. рдмрдЯрди рдХреНрд▓рд┐рдХ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рдмрдЯрди рд╣рд┐рдЯ рд╣реЛрдиреЗ рдкрд░ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред
  7. рдКрдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдирдпрд╛ рдХрдВрдЯреЗрдВрдЯ рд╡реНрдпреВ (xaml) рдмрдирд╛рдПрдВ, рдФрд░ рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рд▓реЗрдмрд▓ рд░рдЦреЗрдВ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛ
  8. xaml.cs рдореЗрдВ рдПрдХ рдмрд╛рдЗрдВрдбреЗрдмрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рдЯреЗрдХреНрд╕реНрдЯ рдмрдирд╛рдПрдВред
  9. рдпрд╛ рдЖрдк рдмрд╕ рд╡реАрдПрд╕ 2017 (15.7.1) рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╕рдорд╛рдзрд╛рди рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдФрд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ
    TestSample.zip
  10. Android рдореЗрдВ рдЪрд▓рд╛рдПрдБ, рдФрд░ рдЬрдирд░реЗрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
  11. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЗрдмрд▓ рд╕реЗ рдмрд╛рдЗрдВрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ ContentView рд╕реЗ рдмрд╛рдЗрдВрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рд╕рд╛рдордЧреНрд░реА рджреГрд╢реНрдп рдХреЗ рдЕрдВрджрд░ рдХрд╛ рд▓реЗрдмрд▓ рднреА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

рд╕рд╛рдордЧреНрд░реА рджреГрд╢реНрдп рдХреЗ рдЕрдВрджрд░ рд▓реЗрдмрд▓ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИ

рдореВрд▓рднреВрдд рдЬрд╛рдирдХрд╛рд░реА

  • рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг: 4.10.0.442
  • рдЕрдВрддрд┐рдо рдЬреНрдЮрд╛рдд рдЕрдЪреНрдЫрд╛ рд╕рдВрд╕реНрдХрд░рдг:
  • рдЖрдИрдбреАрдИ: рд╡реАрдПрд╕ 2017 (15.7.1)
  • рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рд▓рдХреНрд╖реНрдп рдврд╛рдВрдЪреЗ:

    • рдЖрдИрдУрдПрд╕:

    • рдПрдВрдбреНрд░реЙрдЗрдб: 8.3.0.19

    • рдпреВрдбрдмреНрд▓реНрдпреВрдкреА:

  • Android рд╕рдорд░реНрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрд╕реНрдХрд░рдг:
  • рдиреБрдЧреЗрдЯ рдкреИрдХреЗрдЬ:
    Xamarin.рдлреЙрд░реНрдо
    NETStandard.Library

  • рдкреНрд░рднрд╛рд╡рд┐рдд рдЙрдкрдХрд░рдг:

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

рдкреНрд░рдЬрдирди рд▓рд┐рдВрдХ

https://github.com/AppGrate/ListViewBindingIssue

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХрд╛рдо

this.BindingContext = this;

MagicBox.xaml.cs рдореЗрдВ BindingContext рдХреЛ рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдЕрдм рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдирд╛ рдХреЛрдб рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдмрджрд▓реЗрдВ

    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MagicBox : ContentView
    {

        public static readonly BindableProperty TextProperty =
            BindableProperty.Create("Text", typeof(string), typeof(MagicBox), default(string));

        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        public MagicBox ()
        {
            InitializeComponent ();
        }
    }

рдФрд░ рдЖрдкрдХрд╛ xaml to

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestSample.Controls.MagicBox"
             x:Name="box">
  <ContentView.Content>
      <Grid>
          <Label Text="{Binding Text, Source={x:Reference box}}" />
      </Grid>
  </ContentView.Content>
</ContentView>

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдкреВрдЫрд╛ рдЧрдпрд╛ - https://stackoverflow.com/questions/50211197/xamarin-forms-user-control-binding-inside-listview

рдХрд╛рдо

this.BindingContext = this;

MagicBox.xaml.cs рдореЗрдВ BindingContext рдХреЛ рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдЕрдм рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдирд╛ рдХреЛрдб рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдмрджрд▓реЗрдВ

    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MagicBox : ContentView
    {

        public static readonly BindableProperty TextProperty =
            BindableProperty.Create("Text", typeof(string), typeof(MagicBox), default(string));

        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        public MagicBox ()
        {
            InitializeComponent ();
        }
    }

рдФрд░ рдЖрдкрдХрд╛ xaml to

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestSample.Controls.MagicBox"
             x:Name="box">
  <ContentView.Content>
      <Grid>
          <Label Text="{Binding Text, Source={x:Reference box}}" />
      </Grid>
  </ContentView.Content>
</ContentView>

рдзрдиреНрдпрд╡рд╛рдж @StephaneDelcroix , рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Stensan picture Stensan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattregul picture mattregul  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

suihanhbr picture suihanhbr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thudugala picture thudugala  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sonic1015 picture sonic1015  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ