none
在c#的代码中 怎么使用在xaml里面写好的DataTemplate RRS feed

  • 问题

  •     <Window.Resources>
            <DataTemplate x:Key="dt"  >
                <StackPanel >
                    <TextBlock FontSize="14"  Width="80"  Text="{Binding name}"/>
                    <TextBlock FontSize="14"  Width="80"  Text="{Binding age}"/>
                </StackPanel>
            </DataTemplate>
        </Window.Resources>

    ListBox listbox1 = new ListBox();

    DataTemplate dt = ;

    listbox1.ItemTemplate = dt;

    请问这里怎么获取到xaml写好的
    DataTemplate x:Key="dt" 给listbox1使用
    2012年3月6日 2:56

答案

  • 你的这种情况应该通过 listbox1.ItemTemplate = this.FindResource("dt") as DataTemplate; 来使用前面XAML中的已经定义好的DtatTemplate 资源。

    不过通常来讲,我们可以通过反序列化一个DataTemplate XAML字符串来生成所需要的DataTemplate对象, 例如:

        StringReader stringReader = new StringReader(
          @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">...</DataTemplate>");
        XmlReader xmlReader = XmlReader.Create(stringReader);
        DataTemplate dt = XamlReader.Load(xmlReader) as DataTemplate;
    

    Sincerely,

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 huanghy 2012年3月6日 9:19
    2012年3月6日 6:31
    版主

全部回复

  • 你的这种情况应该通过 listbox1.ItemTemplate = this.FindResource("dt") as DataTemplate; 来使用前面XAML中的已经定义好的DtatTemplate 资源。

    不过通常来讲,我们可以通过反序列化一个DataTemplate XAML字符串来生成所需要的DataTemplate对象, 例如:

        StringReader stringReader = new StringReader(
          @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">...</DataTemplate>");
        XmlReader xmlReader = XmlReader.Create(stringReader);
        DataTemplate dt = XamlReader.Load(xmlReader) as DataTemplate;
    

    Sincerely,

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 huanghy 2012年3月6日 9:19
    2012年3月6日 6:31
    版主
  • 谢谢...

    2012年3月6日 9:19