c# - 以编程方式更改 ListBox DataTemplate

标签 c# xaml windows-phone-8 listbox datatemplate

嘿伙计们,我只是在徘徊,是否有人可以告诉我如何以编程方式更改 ListBoxDataTemplate。所以基本上我有这个 DataTemplate:

<DataTemplate x:Key="DataTemplate1">
        <Grid toolkit:TiltEffect.IsTiltEnabled="True" d:DesignWidth="446" Width="446" d:DesignHeight="108" Height="108">
            <TextBlock TextWrapping="NoWrap" Text="{Binding AccountTitle}" VerticalAlignment="Top" Width="456" HorizontalAlignment="Left" Height="40" FontFamily="Segoe WP" FontSize="28" />
            <TextBlock TextWrapping="NoWrap" Text="{Binding AccountUsername}" VerticalAlignment="Top" Width="456" Margin="0,33,0,0" HorizontalAlignment="Left" Height="35" FontFamily="Segoe WP" FontSize="24" />
            <TextBlock TextWrapping="NoWrap" Text="{Binding AccountWebsite}" VerticalAlignment="Top" Width="456" Margin="0,61,0,0" HorizontalAlignment="Left" Height="35" FontFamily="Segoe WP" FontSize="24" />
            <TextBlock TextWrapping="NoWrap" Text="{Binding FolderID}" VerticalAlignment="Top" Width="456" Margin="0,96,0,-13" HorizontalAlignment="Left" Height="35" FontFamily="Segoe WP" FontSize="24" Opacity="0" Visibility="Collapsed" />
            <TextBlock TextWrapping="NoWrap" Text="{Binding AccountDate}" VerticalAlignment="Top" Margin="0,38,0,0" FontFamily="Segoe WP" FontSize="20" TextAlignment="Right" HorizontalAlignment="Right" />
        </Grid>
</DataTemplate>

现在当用户在设置页面上设置某个设置时,ListBox DataTemplate 必须更改为:

<DataTemplate x:Key="DataTemplate1">
        <Grid toolkit:TiltEffect.IsTiltEnabled="True" d:DesignWidth="446" Width="446" d:DesignHeight="108" Height="108">
            <TextBlock TextWrapping="NoWrap" Text="{Binding AccountTitle}" VerticalAlignment="Top" Width="456" HorizontalAlignment="Left" Height="40" FontFamily="Segoe WP" FontSize="28" />
            <TextBlock TextWrapping="NoWrap" Text="{Binding AccountDate}" VerticalAlignment="Top" Margin="0,38,0,0" FontFamily="Segoe WP" FontSize="20" TextAlignment="Right" HorizontalAlignment="Right" />
        </Grid>
</DataTemplate>

这有可能吗?如果是这样,请有人帮助我。 谢谢!

最佳答案

许多方法之一,在页面资源中定义两个DataTemplate。然后您可以在运行时将 ListBox 的 ItemTemplate 设置为这两个中的任何一个:

MyListBox.ItemTemplate = (DataTemplate)FindResource("DataTemplate2"); 

更新:

因为 FindResource() 函数在 Windows Phone 页面中不可用,并且经 OP 确认这对他有效,所以使用以下代码代替上面的代码:

MyListBox.ItemTemplate = (DataTemplate)this.Resources["DataTemplate2"]; 

关于c# - 以编程方式更改 ListBox DataTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291487/

相关文章:

c# - Request ["xx"] 和 Request.Form ["xx"] 之间的区别?

wpf - 将 3D 对象数据移动到单独的 XAML 文件中

c# - 在 SelectedItemChanged 事件中更改 WPF TreeView SelectedItem

c# - 通用 Windows 平台 (UWP) 相当于获取主应用程序 UI

c# - 如何在Windows phone 8 中通过Assembly.Load 动态加载程序集?

c# - 如何参数化 SQL 表而不会受到 SQL 注入(inject)的影响

c# - MVC2 C# TextAreaFor 包含 ', ,'

c# - 如何添加对 C# 脚本的引用

c# - 列表中的按钮数据绑定(bind)行为不正确

c# - Windows Phone 8 SDK 不刷新页面的 XAML 部分