Записи с меткой «Binding»

PostHeaderIcon Доступ к родительскому контексту из элементов, расположенных в GridView в Silverlight

Есть страница типа UserControl, которой передается некий класс в качестве контекста. На странице расположен GridView (Telerik RadGridView в данном случае), в ячейках которого расположены, например, кнопки и эти кнопки должны брать данные (например, иметь доступ к команде) из контекста страницы.

Для решения задачи необходимо создать статический ресурс, связав его с контекстом страницы, после чего этот ресурс указывать в кнопках в качестве источника.

<UserControl.Resources>
    <ContentControl x:Key="CurrentDataContext" Content="{Binding}" />
</UserControl.Resources>
<telerik:RadGridView>
    <telerik:RadGridView.Columns>
        <telerik:GridViewColumn>
            <telerik:GridViewColumn.CellTemplate>
                <DataTemplate>
                    <Button ClickMode="Hover">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="MouseLeftButtonDown">
                                <i:InvokeCommandAction Command="{Binding Source={StaticResource CurrentDataContext}, Path=Content.NewEventCommand}" />
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </Button>
                </DataTemplate>
            </telerik:GridViewColumn.CellTemplate>
        </telerik:GridViewColumn>
    </telerik:RadGridView.Columns>
</telerik:RadGridView>

PostHeaderIcon DatePicker Binding и пустое значение

Есть элемент управления DatePicker с которым связано некое свойство BirthDate типа DateTime.

<sdk:DatePicker SelectedDate="{Binding Path=BirthDate, Mode=TwoWay}" />

Данная связь будет работать только пока значение DatePicker не пустое. В случае очистки значения элемента управления это пустое значение не будет передано свойству и свойство будет содержать свое прежнее значение.

Происходит это потому, что при очистке значения DatePicker его свойство SelectedDate получает значение null, а в нашем примере свойство BirthDate не может иметь нулевое значение.

Решение проблемы очевидно — необходимо объявить свойство BirthDate как Nullable, то есть объявление свойства должно выглядеть таким образом:

public DateTime? BirthDate { get; set; }