我有一个框架的列表视图,我想为每个框架设置一个不同的GrandientStop
。我做了一点研究,我发现<GradientStop Color>
不是一个可绑定的属性,最好在后面的代码中设置颜色。
我确实发现有人说要创建一个附加属性来绑定“颜色”。我该怎么做呢?
下面是我的代码:
<ListView x:Name="addictionsListView" ItemsSource="{Binding Achievements}" HasUnevenRows="True" SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Margin="10,10,10,0">
<Frame CornerRadius="10" Margin="10">
<Frame.Background>
<LinearGradientBrush EndPoint="0,0.7">
<GradientStop Color="{Binding GradientStart}" Offset="0.0">
</GradientStop>
<GradientStop Color="{Binding GradientEnd}" Offset="1.0"></GradientStop>
</LinearGradientBrush>
</Frame.Background>
<FlexLayout JustifyContent="Start" AlignContent="Center">
<Image Source="{Binding Image}" HorizontalOptions="Start" HeightRequest="50"></Image>
<Label Text="{Binding Text}" VerticalOptions="Center" Margin="10,0,0,0" FontSize="20" TextColor="White" FontAttributes="Bold"
WidthRequest="100"></Label>
<Label Text="{Binding Percent}" VerticalOptions="Center" HorizontalOptions="End" Margin="60,0,0,0"
FontSize="20" TextColor="White" FontAttributes="Bold" ></Label>
</FlexLayout>
</Frame>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
实体:
public class Achievement
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public int AddictionId { get; set; }
public string BackgroundColor { get; set; }
public string GradientStart { get; set; }
public string GradientEnd { get; set; }
public string Text { get; set; }
public string Percent { get; set; }
public string Image { get; set; }
public bool IsCompleted { get; set; }
public TimeSpan Duration { get; set; }
}
1条答案
按热度按时间whitzsjs1#
创建可绑定属性;
创建getter和setter:
在你的控件类中声明一个新的控件时,也要确保你设置了绑定(这只是一个例子,如果你感到困惑的话,看看我下面为你创建的c#控件):
现在在XML中,你可以使用你的类bindable属性:
我冒昧地把你的XML转换成一个c#类,它创建了一个控件来保持你的XML更干净:
现在你可以在XML中这样使用它:
上面的类没有添加可绑定的属性,我想我会让你自己来处理:)