使用表达式和反射创建WPF绑定

时间:2018-11-30 14:39:38

标签: c# .net wpf data-binding

我试图简化将WPF控件绑定到项目中的属性。我希望能够以类似于以下方式的方式调用该方法:

MyList.Bind( x => x.ItemsSource, App.Globals.ItemManager.Items );

我编写了一个扩展方法,该方法可以扩展DependencyObject并从给定的PropertyInfo正确解析DependencyProperty(如果存在)。现在,我需要从sourceProperty解析父对象,以便可以为正确的属性生成路径。

我的问题是,由于我将sourceProperty作为对象进行传递,所以似乎没有办法使用反射来获取父对象的实例,也没有办法获取属性的{{1} }。我想保持参数列表尽可能整洁,并尽可能接近上面的示例,但是如果没有解决方法,则添加参数就可以了。

这是我当前的代码:

PropertyInfo

}

1 个答案:

答案 0 :(得分:0)

这实际上很简单:

driver.get("https://www.phptravels.net/");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(.,'Flights')]"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='select2-chosen' and contains(.,'Enter City Or Airport')]")))click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='select2-search']/input[@class='select2-input select2-focused']"))).sendKeys("Pune");

用法:

public static void Bind(
    this DependencyObject obj, DependencyProperty property, object source, string path)
{
    BindingOperations.SetBinding(obj, property, new Binding
    {
        Source = source,
        Path = new PropertyPath(path)
    });
}