Wpf 有没有办法将xaml.cs中公共方法的结果绑定到xaml中的控件?
让我们举一个非常简单的例子:Wpf 有没有办法将xaml.cs中公共方法的结果绑定到xaml中的控件?,wpf,data-binding,xaml,binding,Wpf,Data Binding,Xaml,Binding,让我们举一个非常简单的例子: 在我的window1.xaml中,我有一个标签 名为“lblProduct”的控件 在我的window1.xaml.cs中,我有一个 调用的公共方法 CalculateProduct(Int Var1,Int Var2)。CalculateProduct将 你可能已经猜到了,计算一下 传入的变量的乘积 我只想将“CalculateProduct”的结果绑定到我的标签上。我的实际用例比这个稍微复杂一点。然而,如果我能把它安装好并运行起来,我不仅会很高兴,而且还能搞
- 在我的window1.xaml中,我有一个标签 名为“lblProduct”的控件
- 在我的window1.xaml.cs中,我有一个 调用的公共方法 CalculateProduct(Int Var1,Int Var2)。CalculateProduct将 你可能已经猜到了,计算一下 传入的变量的乘积
Abel.
ObjectDataProvider
有一个ObjectInstance
属性,您可以将窗口实例分配给它。它既快又脏,但我可能只需要让CalculateProduct设置一个属性及其结果并将数据绑定到该属性。是的,有一种方法。这不漂亮。必须将xmlns:Commands属性添加到window1.xaml标记中。最后我把我在里面找到的一些代码搞得乱七八糟
您希望在标签中显示的产品是在加载时生成的还是从另一个控制事件生成的
我不确定这是否会对您有所帮助,但我遇到了类似的情况,当时我正试图用XSLT动态生成XAML。我的解决方案起了作用,有点……嗯,并不是我想做的。但也许它会帮助你
正如我所说,您必须在页面标记中声明xmlns,如下所示:
<Page x:Class="WpfBrowserApplication1.Page1"
blah blah blah
xmlns:Commands="clr-namespace:WpfBrowserApplication1">
private void Page_Loaded(object sender, RoutedEventArgs e)
{
CommandHandlers.BindCommandsToPage(this);
}
令人讨厌的是,据我所知,将内容映射回Page1.xaml的唯一方法是强制转换sender对象并挖掘页面的UI元素,就像在网页上挖掘DOM一样。我在这方面取得了一些成功,但肯定不要假装是专家
最后要做的事情是连接Page1.xaml.cs中的控件。在XAML中,您可以这样做:
<Button Name="btnSubmit" Command="Commands:CommandHandlers.SubmitCommand" etc... />
我希望这会有所帮助,祝你好运。为什么不在从CalculateProduct方法返回之前在CalculateProduct方法中设置标签值呢。基本上,这里需要数据绑定吗?无论如何,这是一种方法,因为您要绑定到标签。aogan:这里的想法是利用WPF数据绑定的灵活性。我可以在后面的代码中设置整个UI,但是MS已经开发了这个绑定系统,我想很容易地利用它。此外,这是一个更复杂问题的简单示例
对于所有其他相关人员,我都同意皮塔捷夫的解决方案。谢谢你的帮助。举个例子,我应该设置什么样的ObjectInstance?”“Window1”和“this”不起作用。谢谢,我认为这是一个解决方案,但我希望我错过了一些uber简单的方法。想法很好。这是一个很好的B计划。代码的当前状态很好。我没有想到只要将我的所有交互移动到一个静态的helper类中,就可以使WPF绑定愉快。这感觉很奇怪,但如果有必要,我可以克服。我迫不及待地想知道更多关于那个混蛋的事;-)我不确定这是否是你想要的,但我想它可能会有帮助。这会很好!我试图释放我对我想做什么的先入为主的观念,我开始接受我需要做的事情。谢谢你,伙计!
private void Page_Loaded(object sender, RoutedEventArgs e)
{
CommandHandlers.BindCommandsToPage(this);
}