在 FlipView windows 应用商店的按钮中绑定图像
bind images in buttons in a FlipView windows app store
我是通用应用程序开发的新手,我有一个翻页视图,每页有 4 个按钮,每个按钮都有一个图像(总共 8 个图像),我创建了一个包含列表的模型 class图片及其 URL 的数量:
public class SampleItem
{
public string Image1 { get; set; }
public string Image2 { get; set; }
public string Image3 { get; set; }
public string Image4 { get; set; }
public string Image5 { get; set; }
public string Image6 { get; set; }
public string Image7 { get; set; }
public string Image8 { get; set; }
}
public class ButtonImages
{
public List<SampleItem> SampleItems { get; set; }
public ButtonImages()
{
SampleItems = new List<SampleItem>();
SampleItems.Add(new SampleItem()
{
Image1 = "images/1.png"
});
SampleItems.Add(new SampleItem()
{
Image2 = "images/2.png"
});
SampleItems.Add(new SampleItem()
{
Image3 = "images/3.png"
});
...........//all the 8 images URIs
然后我将我的 flipview 定义为 flipview1:
<Page.Resources>
<DataTemplate x:Key="FlipViewItemTemplate">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Column="0" Grid.Row="0" >
<Image Source="{Binding Image1}"/>
</Button>
<Button Grid.Column="1" Grid.Row="0">
<Image Source="{Binding Image2}" />
</Button>
<Button Grid.Column="0" Grid.Row="1">
<Image Source="{Binding Image3}"/>
</Button>
<Button Grid.Column="1" Grid.Row="1">
<Image Source="{Binding Image4}"/>
</Button>
</Grid>
</DataTemplate>
</Page.Resources>
<FlipView x:Name="flipView1" ItemTemplate="{StaticResource FlipViewItemTemplate}"/>
这是我尝试获取 8 张图片并将它们放在每页的 4 个按钮中:
private void getimages()
{
List<ButtonImages> T = new List<ButtonImages>();
ButtonImages a;
if(true)
{
a = new ButtonImages();
T.Add(a);
}
flipView1.ItemsSource = T;
}
但是我有 8 页,每页有 4 个按钮,每页一个按钮有一个图像,其他按钮是空的:(
我已经调试了代码,我得到了 T 中的所有图像作为列表
你知道我该如何更正代码吗
感谢帮助
首先,如果您希望每个 FlipView 页面有 4 张图片,您的 SampleItem
应该包含 4 个图片路径:
public class SampleItem
{
public string Image1 { get; set; }
public string Image2 { get; set; }
public string Image3 { get; set; }
public string Image4 { get; set; }
}
其次,如果您想要包含 4 张图片的 2 页,您应该创建包含 SampleItem
的 2 个对象的列表
var page1 = new SampleItem()
{
Image1 = "images/bar.png",
Image2 = "images/cuisine.png",
Image3 = "images/events.png",
Image4 = ""//path to 4th image on 1st page
};
var page2 = new SampleItem()
{
Image1 = "",//path to 1st image on 2nd page,
Image2 = "",//path to 2nd image on 2nd page,
Image3 = "",//path to 3rd image on 2nd page,
Image4 = ""//path to 4th image on 2nd page
};
var pages = new List<SampleItem>()
{
page1,
page2
};
最后,您应该为 FlipView 设置 ItemsSource
flipView1.ItemsSoruce = pages;
您的代码无法正常工作,因为您创建了包含 8 个元素的列表,而每个元素只有一个 Image 属性 集。这就是为什么您得到 8 页但只显示一张图片的原因。
顺便说一句,我已经回答了非常相似的问题(我想这是你的问题)
我是通用应用程序开发的新手,我有一个翻页视图,每页有 4 个按钮,每个按钮都有一个图像(总共 8 个图像),我创建了一个包含列表的模型 class图片及其 URL 的数量:
public class SampleItem
{
public string Image1 { get; set; }
public string Image2 { get; set; }
public string Image3 { get; set; }
public string Image4 { get; set; }
public string Image5 { get; set; }
public string Image6 { get; set; }
public string Image7 { get; set; }
public string Image8 { get; set; }
}
public class ButtonImages
{
public List<SampleItem> SampleItems { get; set; }
public ButtonImages()
{
SampleItems = new List<SampleItem>();
SampleItems.Add(new SampleItem()
{
Image1 = "images/1.png"
});
SampleItems.Add(new SampleItem()
{
Image2 = "images/2.png"
});
SampleItems.Add(new SampleItem()
{
Image3 = "images/3.png"
});
...........//all the 8 images URIs
然后我将我的 flipview 定义为 flipview1:
<Page.Resources>
<DataTemplate x:Key="FlipViewItemTemplate">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Column="0" Grid.Row="0" >
<Image Source="{Binding Image1}"/>
</Button>
<Button Grid.Column="1" Grid.Row="0">
<Image Source="{Binding Image2}" />
</Button>
<Button Grid.Column="0" Grid.Row="1">
<Image Source="{Binding Image3}"/>
</Button>
<Button Grid.Column="1" Grid.Row="1">
<Image Source="{Binding Image4}"/>
</Button>
</Grid>
</DataTemplate>
</Page.Resources>
<FlipView x:Name="flipView1" ItemTemplate="{StaticResource FlipViewItemTemplate}"/>
这是我尝试获取 8 张图片并将它们放在每页的 4 个按钮中:
private void getimages()
{
List<ButtonImages> T = new List<ButtonImages>();
ButtonImages a;
if(true)
{
a = new ButtonImages();
T.Add(a);
}
flipView1.ItemsSource = T;
}
但是我有 8 页,每页有 4 个按钮,每页一个按钮有一个图像,其他按钮是空的:(
我已经调试了代码,我得到了 T 中的所有图像作为列表 你知道我该如何更正代码吗
感谢帮助
首先,如果您希望每个 FlipView 页面有 4 张图片,您的 SampleItem
应该包含 4 个图片路径:
public class SampleItem
{
public string Image1 { get; set; }
public string Image2 { get; set; }
public string Image3 { get; set; }
public string Image4 { get; set; }
}
其次,如果您想要包含 4 张图片的 2 页,您应该创建包含 SampleItem
var page1 = new SampleItem()
{
Image1 = "images/bar.png",
Image2 = "images/cuisine.png",
Image3 = "images/events.png",
Image4 = ""//path to 4th image on 1st page
};
var page2 = new SampleItem()
{
Image1 = "",//path to 1st image on 2nd page,
Image2 = "",//path to 2nd image on 2nd page,
Image3 = "",//path to 3rd image on 2nd page,
Image4 = ""//path to 4th image on 2nd page
};
var pages = new List<SampleItem>()
{
page1,
page2
};
最后,您应该为 FlipView 设置 ItemsSource
flipView1.ItemsSoruce = pages;
您的代码无法正常工作,因为您创建了包含 8 个元素的列表,而每个元素只有一个 Image 属性 集。这就是为什么您得到 8 页但只显示一张图片的原因。
顺便说一句,我已经回答了非常相似的问题(我想这是你的问题)