Записи с меткой «Binding»
Доступ к родительскому контексту из элементов, расположенных в 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>
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; }