![](/img/trans.png)
[英]Accessing a Label control within a GridView Footer with Javascript
[英]Control the visibility of GridView Footer based on a property within the Data
我正在做一個項目,如果已在Gridview
加載的數據中有某些屬性可用,則必須顯示Gridview
的Footer
。
我使用自定義DataTemplateSelector
類在Gridview
顯示數據,但該屬性存在於主類中。
public class ItemTemplateData
{
public string PropertyToShowFooter {get; set;}
}
// other classes derive from this main class
public class VideoItemTemplateData : ItemTemplateData
{
// other properties not related here
}
現在,如果我在Gridview
顯式創建一個Footer
作為DataTemplate
,它可以按預期工作,但是如果我在Dictionary
創建一個DataTemplate
並嘗試使用它,則它不起作用。 它始終顯示Footer
屬性是否為空。 我使用Converter
來轉換屬性以控制Visibility
。
更新:
沒有代碼/方法有效! 無論如何,它始終顯示或隱藏頁腳。
// First method that I tried
<Gridview>
....
<GridView.FooterTemplate>
<DataTemplate
x:DataType="data:ItemTemplateData">
<UserControl>
<HyperlinkButton
Visibility="{x:Bind PropertyToShowFooter, Mode=OneWay, Converter={StaticResource StringToVisibleConverter}}"
Click="HyperlinkButton_Click"
Style="{StaticResource GridViewFooterLinkStyle}"/>
</UserControl>
</DataTemplate>
</GridView.FooterTemplate>
</Gridview>
// 2nd method that I tried and really want this one to work.
<DataTemplate
x:Key="GridViewCustomFooterTemplate"
x:DataType="data:ItemTemplateData">
<UserControl>
<HyperlinkButton
Visibility="{x:Bind PropertyToShowFooter, Mode=OneWay, Converter={StaticResource StringToVisibleConverter}}"
Click="HyperlinkButton_Click"
Style="{StaticResource GridViewFooterLinkStyle}"/>
</UserControl>
</DataTemplate>
<GridView
FooterTemplate="{StaticResource GridViewCustomFooterTemplate}"/>
TemplateSelector
更多詳細信息:
public class DataTemplateSelectorClass : DataTemplateSelector
{
public DataTemplate VideoItemTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
if (item is VideoItemTemplateData)
{
return VideoItemTemplate;
}
return base.SelectTemplateCore(item, container);
}
}
Footer
只是一個簡單的HyperlinkButton
,根據轉換器應該是可見的或折疊的。 如果屬性中包含非空字符串,則該字符串將可見,否則將被折疊。
字符串可見性轉換器:
public class StringToVisiblity : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is string && value != null)
{
if (value.ToString().Trim().Length > 0)
{
return Visibility.Visible;
}
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
我不確定頁腳如何從Gridview
的項目中確定其DataContext
。 任何建議都會有所幫助。 謝謝
頁腳必須知道從何處獲取價值。 如果列表包含多個項目,則無法知道應使用哪個項目。 要使頁腳模板中的綁定起作用,您必須直接將Footer
屬性設置為它應使用的實例:
<GridView Footer="{x:Bind TheOneItemTemplateData}"> ... </GridView>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.