0

我有一个带有 ListBox 控件的笔记应用程序,它列出了ObservableCollection<Note> Notes. class Note具有类似的属性

String Title;
bool Has_Reminder;
DateTime Reminder_Date;

我想要的是显示 的 TextBlock 元素仅在为真Reminder_Date时才显示。Has_Reminder但我不知道如何从我的自定义控件 NoteListItem 访问此属性。它的this.DataContext属性是null,但该控件仍能正确显示由 ListBox ItemsSource 传递的 Note 的绑定属性。我怎样才能做到这一点?

谢谢你的帮助。

我试图读取构造函数中的属性,但不起作用:

public NoteListItem()
{
    InitializeComponent();

    Note this_note = LayoutRoot.DataContext as Note; // turns out, this_note is null

    if (!this_note.Has_Reminder)
        Reminder_Info.Visibility = System.Windows.Visibility.Collapsed;
}

NoteListItem 控件

<Grid x:Name="LayoutRoot" >
    <TextBlock x:Name="Title" Text="{Binding Title}" />
    <TextBlock x:Name="Reminder_Date" Text="{Binding Reminder_Date}" />
</Grid>

笔记列表控件:

<ListBox x:Name="NoteListBox" ItemsSource="{Binding Notes}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <local:NoteListItem />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
4

1 回答 1

3

你知道如何使用转换器吗?您的转换器会将 bool 转换为 Visibility,然后您可以将 TextBlock 的 Visibility 绑定到Has_Reminder

<TextBlock x:Name="Reminder_Date" Text="{Binding Reminder_Date}" Visibility="{Binding Has_Reminder, Converter={...}}"/>

这可能会有所帮助: http: //www.jeff.wilcox.name/2008/07/visibility-type-converter/

于 2012-05-05T16:46:20.387 回答