0

から利用可能なすべてのメモを一覧表示するListBoxコントロールを備えたメモアプリケーションがありますObservableCollection<Note> Notesclass Note次のような属性があります

String Title;
bool Has_Reminder;
DateTime Reminder_Date;

私が欲しいのは、がtrueのReminder_Date場合にのみ、を表示するTextBlock要素が表示されることです。Has_Reminderしかし、カスタムコントロールのNoteListItemからこの属性にアクセスする方法がわかりません。そのthis.DataContext属性はですnullが、コントロールは、ListBoxItemsSourceによって渡された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>

NoteListコントロール:

<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 に答える