我正在使用可系結的布局來顯示專案串列。這些專案系結到鍵值對的 ObservableRangeCollection
public ObservableRangeCollection<KeyValuePair<string, string>> Items { get; set; }
這是呈現專案的布局——每一行都使用 BoxView 由一行分隔:
<StackLayout BackgroundColor="Transparent" BindableLayout.ItemsSource="{Binding Items}" Padding="20">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="1" />
</Grid.RowDefinitions>
<Label Grid.Column="0"
Grid.Row="0"
Text="{Binding Key}"/>
<Label Grid.Column="1"
Grid.Row="0"
HorizontalOptions="End"
HorizontalTextAlignment="End"
Text="{Binding Value}"/>
<BoxView Grid.Column="0"
Grid.Row="1"
Grid.ColumnSpan="2"
HeightRequest="1" />
</Grid>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
問題是串列末尾有一行額外的行,我希望在渲染 observable 集合中的最后一個元素后隱藏它。
我需要弄清楚最后一個專案是否在 BindableLayout 上呈現,并將 BoxView 的 IsVisible 屬性設定為 false,但我不確定如何使用 XAML 執行此操作。
uj5u.com熱心網友回復:
一種方法是定義一個具有布爾屬性的類,您將每個專案設定為 true 或 false。這控制著 BoxView 是否出現。
我的專案.cs:
public class MyItem
{
public string Key { get; set; }
public string Value { get; set; }
/// <summary>
/// Default to "true". Most items will show the line.
/// </summary>
public bool ShowLineUnder { get; set; } = true;
MyModelView.cs:
public class MyModelView
{
public ObservableCollection<MyItem> Items { get; set; }
public MyModelView()
{
Items.Add(new MyItem(...));
Items.Add(new MyItem(...));
Items.Add(new MyItem(...));
// Hide line on last item.
Items[Items.Count - 1].ShowLineUnder = false;
}
}
在 ItemTemplate 的 XAML 中:
<BoxView ... IsVisible="{Binding ShowLineUnder}" />
根據需要進行調整。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/361475.html
標籤:沙马林 xamarin.forms
