我正在使用Jarloo's calendar control在我的WPF软件中显示日历。根据我的需要,我补充说每天都包含一个项目列表,比如List<Item> Items
。
Jarloo日历是我主要视觉工作室解决方案中的第二个项目。我这样使用这个控件:
<Jarloo:Calendar DayChangedCallback="{Binding DayChangedEventHandler}"/>
正如你所看到的,我希望我可以将一个方法从我的主项目传递到日历的项目,这样我就可以在Calendar的构造函数中添加该方法作为DayChanged事件的事件处理程序。
但是,通过依赖项收到的项目为空...
在日历代码中,我的依赖项属性定义为:
public static readonly DependencyProperty DayChangedCallbackProperty = DependencyProperty.Register("DayChangedCallback", typeof(EventHandler<DayChangedEventArgs>), typeof(Calendar));
我的“DayChangedEventHandler”定义为
public EventHandler<DayChangedEventArgs> DayChangedHandler { get; set; }
void DayChanged(object o, DayChangedEventArgs e)
{
}
// i set this way the DayChangedHandler property so that I can bind on it from the view
DayChangedHandler = new EventHandler<DayChangedEventArgs>(DayChanged);
有人对我有暗示吗?
非常感谢:) .x
答案 0 :(得分:4)
以下是有关非静态字段问题的示例:
public partial class MainWindow : Window
{
public bool IsChecked
{
get { return (bool)GetValue(IsCheckedProperty); }
set { SetValue(IsCheckedProperty, value); }
}
// Using a DependencyProperty as the backing store for IsChecked. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsCheckedProperty =
DependencyProperty.Register("IsChecked", typeof(bool), typeof(MainWindow), new PropertyMetadata(false, new PropertyChangedCallback(PropertyChanged)));
private static void PropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
MainWindow localWindow = (MainWindow)obj;
Console.WriteLine(localWindow.TestString);
}
public string TestString { get; set; }
public MainWindow()
{
InitializeComponent();
TestString = "test";
this.DataContext = this;
}
}
以下是测试它的XAML:
<CheckBox Content="Case Sensitive" IsChecked="{Binding IsChecked}"/>
当属性更改时,将调用回调,在thix示例中,您可以访问非静态TestString属性。