我正在尝试将静态变量绑定到日历,但是在使用Path
绑定时,我收到一个错误,我需要TwoWay
。
有很多绑定静态变量的例子,但我似乎无法让任何一个例子适合我。
这是属性:
private static DateTime _vCalenderSelectedDate;
public static DateTime CalenderSelectedDate
{
get { return _vCalenderSelectedDate; }
set
{
_vCalenderSelectedDate = value;
NotifyStaticPropertyChanged();
}
}
这是简化的XAML:
xmlns:viewModels="clr-namespace:StaffShiftManager.ViewModels"
<Calendar SelectedDate="{Binding
Source={x:Static viewModels:ShiftManagerViewModel.CalenderSelectedDate},
UpdateSourceTrigger=PropertyChanged}" >
我尝试通过添加XAML的路径来按照大多数人的建议进行操作,但我无法让它工作;
<Calendar SelectedDate="{Binding
Source={x:Static viewModels:ShiftManagerViewModel.CalenderSelectedDate},
Path=CalenderSelectedDate,
UpdateSourceTrigger=PropertyChanged}" >
有人能指出我正确的方向吗?
答案 0 :(得分:2)
Binding表达式应如下所示。注意路径周围的括号。
<Calendar SelectedDate="{Binding
Path=(viewModels:ShiftManagerViewModel.CalenderSelectedDate)}"/>
有关详细信息,请参阅MSDN上的PropertyPath for Objects in Data Binding文章,单个属性,附加或其他类型合格部分。
答案 1 :(得分:0)
为了确保完整回答此问题,我认为链接到同一用户提出的其他相关问题的答案是相关的。
上面的问题有一句话:
NotifyStaticPropertyChanged();
我希望能够将用户在问题中的内容与答案中提供的XAML结合起来,但需要知道静态属性更改的通知是如何工作的。
我搜索并最终找到related answer,其定义为:
public static event PropertyChangedEventHandler StaticPropertyChanged;
private static void NotifyStaticPropertyChanged([CallerMemberName] string name = null)
{
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(name));
}