C# 通过在Windows Phone 8应用程序中以编程方式更改ListBox的DataTemplate设计?
我正在将邮件列表绑定到已读和未读的WPF列表框,我可以将其绑定,但我希望未读邮件的字体粗体,而已读邮件的字体粗体 我的代码如下所示C# 通过在Windows Phone 8应用程序中以编程方式更改ListBox的DataTemplate设计?,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,我正在将邮件列表绑定到已读和未读的WPF列表框,我可以将其绑定,但我希望未读邮件的字体粗体,而已读邮件的字体粗体 我的代码如下所示 <ListBox ItemsSource="{Binding Table}" x:Name="lbMessageList" > <ListBox.ItemTemplate> <DataTemplate > <StackPanel Margin="10,0,
<ListBox ItemsSource="{Binding Table}" x:Name="lbMessageList" >
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Margin="10,0,0,0" Width="460" >
<TextBlock TextWrapping="Wrap"Text="{Binding MessageSubject}">
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我正在使用
List<Table> myData = new List<Table>();
myData.Add(new Table() {MessageSubject = blog.MessageSubject });
List myData=new List();
添加(新表(){MessageSubject=blog.MessageSubject});
在表
类中需要一个MessageRead
布尔标志。将TextBlock
元素上的fontwweight
绑定到MessageRead
,并使用Converter
将false
转换为Bold
,将true
转换为Normal
/Light
尝试此数据模板:
<DataTemplate >
<StackPanel Margin="10,0,0,0" Width="460" >
<TextBlock Name="txtMessageHeader" TextWrapping="Wrap" Text="{Binding MessageSubject}">
</TextBlock>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ReadStatusOfMessage}" Value="False">
<Setter TargetName="txtMessageHeader" Property="FontWeight" Value="Bold"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
@Toadflaks我在代码中没有得到Id,所以我如何确定文本块这次是粗体的,这次是浅色的,,,这很混乱。您的项目应该有属性,例如bool IsMessageRead
。然后,您可以使用此属性更改单个数据模板中的内容(您不需要更多)。最简单的方法是创建转换器,它在false
上返回字体,在true
上返回粗体,并绑定以更改标记,Windows Phone 8与wpf非常不同。它会抛出一个错误----错误2在类型“DataTemplate”中找不到可附加属性“Triggers”。是的,这是可能的,无法接受代码,错误是->成员触发器无法识别或无法访问,我在代码中使用了上述代码