【问题标题】:Xamarin Localization and binding errorXamarin 本地化和绑定错误
【发布时间】:2017-10-16 16:38:41
【问题描述】:

我的翻译绑定文本有问题。我怎样才能使绑定项目正常工作?我已经尝试过更改顺序,但仍然没有,我不知道现在是什么。下面是我的列表代码,它是 XAML 的一部分,我可以在其中绑定和翻译单词

这段代码可以正常工作:

<Grid RowSpacing="10" Padding="30" VerticalOptions="Center" >

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>

        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>

        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Button  Grid.Row="2"  Text="{resource:TranslateExtension Szukaj}"
                BorderRadius="30"
                BackgroundColor="#80FFFFFF"

                FontSize="18"
                TextColor="#ffe2fb"
                BorderWidth="4"
                BorderColor="#ffe2fb"
                Clicked="Button_Clicked_1"/>

    <Button  Grid.Row="3"  Text="{resource:TranslateExtension Mapa}"
                BorderRadius="30"
                BackgroundColor="#80FFFFFF"
                FontSize="18"
                TextColor="#ffe2fb"                    
                BorderWidth="4"
                BorderColor="#ffe2fb"
                Clicked="Button_Clicked"/> 
</Grid>

但这段代码不是:

<RelativeLayout>
    <ListView x:Name="ListaNazw" SeparatorColor="#3d122c" HasUnevenRows="True"
              RelativeLayout.HeightConstraint="{ConstraintExpression Property=Height,Factor=1,Type=RelativeToParent}"
              RelativeLayout.WidthConstraint="{ConstraintExpression Property=Width,Factor=1,Type=RelativeToParent}"  ItemSelected="ListaNazw_ItemSelected" >
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Horizontal"  Padding="5" BackgroundColor="#50FFFFFF">
                        <StackLayout HorizontalOptions="StartAndExpand">
                            <Label Text="{resource:TranslateExtension {Binding nazwa}}" TextColor="#fff2f2" FontSize="17"/>
                            <Label Text="{resource:TranslateExtension {Binding opis}}" TextColor="#ffe5e5" />
                        </StackLayout>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</RelativeLayout>

列表

Task.Factory.StartNew(() =>
            {
                ListaNazw.ItemsSource = new List<Listyy>
          {

              new Listyy { nazwa = "Pierwsze Spotkanie", opis="Niech to spotkanie będzie udane" , ema = 1 },
              new Listyy { nazwa = "Spotkanie Biznesowe", opis = "Zaimponuj swojemu partnerowi", ema = 2 },
              new Listyy { nazwa = "Spotkanie Towarzyskie", opis = "Make your day", ema = 3 },
              new Listyy { nazwa = "Pierwsza Randka", opis = "Oczaruj swoją drugą połówkę", ema = 4 },
              new Listyy { nazwa = "Pierwszy Raz", opis = "Zapewne to będzie wyjątkowe", ema = 5 },
              new Listyy { nazwa = "Spotkanie", opis = "Luźna rozmowa przy kawie", ema = 6 },
              new Listyy { nazwa = "Rozrywka", opis = "Czas na chwilę szaleństwa", ema = 7 },
              new Listyy { nazwa = "Impreza", opis = "Ubierz coś ładnego, my zajmiemy się resztą", ema = 8 },
              new Listyy { nazwa = "Spacer", opis = "Park, molo? Pozwól sobie pomóc", ema = 9 },
              new Listyy { nazwa = "Odpoczynek", opis = "Chwila relaksu z pewnością Ci nie zaszkodzi", ema = 10 },
              new Listyy { nazwa = "Urodziny", opis = "Zrób niespodziankę swoim bliskim", ema = 11 },
              new Listyy { nazwa = "Czas wolny", opis = "Znajdziemy Ci idealne miejsce", ema = 12 },

          };
            });
        });

【问题讨论】:

    标签: c# localization xamarin.forms xamarin.android


    【解决方案1】:

    我没有看到将ItemSource 设置为ListViewListView 的数据模型的代码,与数据和视图之间的直接绑定不同,项目的绑定是为@ 中的每个项目克隆的987654326@,并且已在模板上设置的数据绑定将传输到各个克隆。

    我认为您可以将其视为每个项目的绑定模型。可以参考Bindings and Collections实现ListView中的数据绑定。

    【讨论】:

    • 查找,我添加了 ListView,但我无法翻译,在 resx 中我翻译了这些词:Pierwsze Spotkanie 等
    • @J.J,尝试从你的绑定中删除resource:TranslateExtension,像{Binding nazwa}一样直接绑定它,这里你的字符串直接添加到列表中。
    • 我知道,但我想翻译这个。因此,如果我将 {Binding nazwa} 单词与列表中的一样
    • @J.J,对不起,我不认为你可以像ListView之外的普通控件一样直接翻译,但你可以尝试与转换器绑定,在转换中你可以翻译本地化。
    • @J.J,找到了这个问题的讨论Localization in a ListView,有示例代码你可以看看。如果你觉得这个答案有帮助,你能标记这个答案吗?非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2016-12-02
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多