我正在进行一个侧面项目,经过多次探索之后我已经撞墙了,可以使用一些帮助。
情况如下:我有一个Window,我想基于组合框中的选项动态填充(简单),所以我以编程方式构建所有内容。我需要构建的是几个框,它们将根据同一结果集中的不同查询进行填充。我计划做的是将Binding.Source(文本框文本属性)设置为Func,并且当调用更新源时,它会自动运行该函数。
这不会发生。有关如何将文本属性绑定到将随时间变化的LINQ查询的任何想法吗?
我可以提供所需的更多信息。
谢谢, 尼克
更新代码段:
private int AllelePopulation(IAllele allele)
{
var list= from b in _population.Populus
from g in b.Genes
where g.Representation == allele.Representation
select b;
return list.ToList().Count;
}
将func设置为绑定源(参数名称为bindingSource)
var binding = new Binding
{
Source = bindingSource,
Mode = BindingMode.OneWay
};
tb.SetBinding(TextBox.TextProperty, binding);
答案 0 :(得分:3)
有些东西必须做“神奇”。在你的情况下,它将是一个将lambda表达式转换为字符串的转换器。
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.example.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent); return true;
}
}
答案 1 :(得分:0)
您是否实施了INotifyPropertyChanged
?
这个简单的viewmodel / data上下文方法怎么样:
public class DC : INotifyPropertyChanged
{
// access to you Func<string> is simply via a property
// this can be used by setting the binding in code or in XAML
public string Allele
{
get { return MyFunc(); }
}
// whenever a variable used in your function changes, raise the property changed event
private int I
{
get { return i; }
set { i = value; OnPropertyChanged("Allele"); }
}
private int i;
public void Modify()
{
// by using the property, the change notification is done implicitely
I = I + 1;
}
// this is your private int AllelePopulation(IAllele allele) function
private string MyFunc()
{
return (I*2).ToString();
}
// property changed notification
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}