我有一个名为 AllPageView 的页面,它有一个 GridView。GridView 的数据模板如下
<GridView.ItemTemplate>
<DataTemplate>
<Canvas Width="{Binding TemplateWidth}" Height="{Binding TemplateHeight}">
<Canvas.Background>
<ImageBrush ImageSource="{Binding PageBackground}"/>
</Canvas.Background>
<Image Height="{Binding TemplateHeight}" Width="{Binding TemplateWidth}" Source="{Binding Page}" Stretch="Uniform" Opacity="1" CacheMode="BitmapCache" />
<StackPanel x:Name="EditDeleteStackPanel" Width="{Binding TemplateWidth}" Height="{Binding TemplateHeight}" Opacity="0.95">
<Button x:Name="NoteDelete" HorizontalAlignment="Right" VerticalAlignment="Top" Foreground="{x:Null}" Tapped="NoteDelete_Tapped" MinWidth="50" MinHeight="50" Margin="0,0,10,0" BorderBrush="{x:Null}" >
<Button.Background>
<ImageBrush ImageSource="{Binding Delete}"/>
</Button.Background>
</Button>
<Button x:Name="NoteEdit" HorizontalAlignment="Right" VerticalAlignment="Top" FontFamily="Segoe Script" FontSize="24" BorderBrush="{x:Null}" Tapped="NoteEdit_Tapped" Foreground="{x:Null}" MinWidth="50" MinHeight="50" Margin="0,0,10,0">
<Button.Background>
<ImageBrush ImageSource="{Binding Edit}"/>
</Button.Background>
</Button>
</StackPanel>
</Canvas>
</DataTemplate>
</GridView.ItemTemplate>
Image 的高度和宽度分别绑定到类TemplateHeight
和TemplateWidth
类Page_Collection
。我有一个更好的和二传手TemplateHeight
and TemplateWidth
。
public static int TemplateWidth
{
get { return m_templateWidth; }
set
{
m_templateWidth = value;
}
}
问题是,我现在需要从名为General
.
切换切换开关时,我需要更改图像的大小。像这样
private void OnCompactCategoryToggled(object sender, RoutedEventArgs e)
{
if (compactCateg.IsOn == true)
{
Page_Collection.TemplateHeight = 100;
Page_Collection.TemplateWidth = 350;
}
else
{
Page_Collection.TemplateHeight = 200;
Page_Collection.TemplateWidth = 700;
}
}
虽然AllPageView
页面绑定到Page_Collection
,但值不会更新,因此图像大小是相同的。Genera
l 是Flyout
中的一个SettingsPane
。
我对 Windows 8 非常陌生,这是我的第一次DataBinding
。有人可以告诉我哪里出错了或者我错过了什么吗?
编辑
这是 for 背后的代码AllPageView
。我调用Load_PageCollection
类的构造函数
public async void Load_PageCollection()
{
m_pageConfig = new PageConfig();
Page_Collection[] tmppage = await m_pageConfig.Read_FromJSONFile(App.PAGECONFIG);
List<Page_Collection> tmp;
if (tmppage != null)
{
for (int i = 0; i < tmppage.Length; i++)
{
tmppage[i].UpdateCompletionStatus();
}
tmp = tmppage.ToList();
ObservableCollection<Page_Collection> NoteCol = new ObservableCollection<Page_Collection>(tmp.ToList<Page_Collection>());
PageCollection = NoteCol;
PageLV.DataContext = PageCollection;
m_pageManager.InitilizeWithFileLoc(PageCollection.ToArray());
}
else
{
PageCollection = new ObservableCollection<Page_Collection>();
PageLV.DataContext = PageCollection;// PageLV is the grid view. The gridview, the image and a stackpanel.
}
}