Xamarin Xaml связывает более 2 свойств с TextCell - PullRequest
0 голосов
/ 02 марта 2020

Я хочу связать более 2 свойств с моим списком, возможно ли вообще проверить мой код ниже

<ListView x:Name="APRListView"
                  Grid.Row="4"
                  Grid.RowSpan="5"
                  Grid.Column="0"
                  Grid.ColumnSpan="4"
                   Margin="10,-20,-50,-300">
                  <ListView.ItemTemplate>
                      <DataTemplate>
                          <TextCell
                              Text="{Binding ProductName}"
                              Detail="{Binding Monthly}"
                          />
                      </DataTemplate>
                  </ListView.ItemTemplate>
        </ListView>

Есть ли другой подход к этому?

Я бы тоже хотел также добавить текст к деталям ie on Detail = "{Binding Monthly}". Я хочу, чтобы он возвращался во внешнем интерфейсе - Monthly: {Monthly}

Ответы [ 3 ]

1 голос
/ 02 марта 2020

В соответствии с кодом Джейсона, вы также можете попробовать использовать StringFormat привязку в метке, пожалуйста, посмотрите:

 <ListView HasUnevenRows="True" ItemsSource="{Binding products}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Margin="10" Text="{Binding ProductName}" />
                            <Label Text="{Binding Monthly, StringFormat='Monthly: {0:N}'}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Снимок экрана:

enter image description here

1 голос
/ 02 марта 2020

Пожалуйста, проверьте мой код, он поможет вам найти несколько привязок к текстовой ячейке:

Код XAML

<ListView HasUnevenRows="True" ItemsSource="{Binding DemoItems}" SeparatorVisibility="None">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding name}" TextColor="Red" Detail="{Binding details}" DetailColor="Green">

                </TextCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Привязка ViewModel

this.BindingContext = new TestPageViewModel();

Код ViewModel:

public class TestPageViewModel : PlusDoctor.ViewModels.BaseViewModel
{
    private ObservableCollection<DemoDTO> demoItems;
    public ObservableCollection<DemoDTO> DemoItems
    {
        get { return demoItems; }
        set
        {
            demoItems = value;
            OnPropertyChanged();
        }
    }

    public TestPageViewModel()
    {
        DemoItems = new ObservableCollection<DemoDTO>() {
        new DemoDTO(){ name="abc", details="ABC details" }, new DemoDTO(){ name="xyz", details="XYZ details" } };
    }
}

Модель данных

public class DemoDTO
{
    public string name { get; set; }
    public string details { get; set; }
}

Вывод:

enter image description here

Надеюсь, это сработает для вас

Спасибо

1 голос
/ 02 марта 2020

используйте ViewCell для создания собственного макета и используйте Label с FormattedText для включения нескольких источников текста в один Label

<DataTemplate>
  <ViewCell>
    <StackLayout>
      <Label Text="{Binding ProductName}" />
      <Label Text="{Binding Monthly}" />
        <Label.FormattedText>
          <FormattedString>
                <Span Text="Monthly: " />
                <Span Text="{Binding Monthly}" />
          </FormattedString>
        </Label.FormattedText>
    </StackLayout>
  </ViewCell>
</DataTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...