C# 属性更改时,与控件的绑定不会更新
我使用直接绑定到控件的C# 属性更改时,与控件的绑定不会更新,c#,wpf,xaml,data-binding,frameworkelement,C#,Wpf,Xaml,Data Binding,Frameworkelement,我使用直接绑定到控件的绑定+IValueConverter来生成使用控件上的多个属性计算的结果。当控件上的属性更改时,是否有方法调用转换器 我知道可以使用IMultiValueConverter绑定到我想要的属性,但这会占用代码中的大量空间并中断流程 示例代码: main window.xaml 你好 MainWindow.xaml.cs 使用系统; 使用System.Collections.Generic; 利用制度全球化; 使用System.Linq; 使用系统文本; 使用System.
绑定
+IValueConverter
来生成使用控件上的多个属性计算的结果。当控件上的属性更改时,是否有方法调用转换器
我知道可以使用IMultiValueConverter绑定到我想要的属性,但这会占用代码中的大量空间并中断流程
示例代码:
main window.xaml
你好
MainWindow.xaml.cs
使用系统;
使用System.Collections.Generic;
利用制度全球化;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes;
命名空间绑定框架元素
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
B.宽度+=20;
}
}
公共类ElementConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
FrameworkElement=作为FrameworkElement的值;
return element.ActualWidth+element.ActualHeight;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
}
绑定到属性(只要它们是依赖属性)是简单的解决方案,以便了解发生了一些更改。
如果您想超越边界,您可以创建依赖属性侦听器,并在更改指定属性时发送一些消息,例如使用MVVM Light。然后,根据更改的DP,在任何需要更新某些数据的地方捕获此消息。不管怎样,我不会建议你采取这样的步骤
顺便说一句,您将绑定设置为Button,由于Button是UI元素,因此转换器将被调用一次,并且永远不会再次调用,请记住这一点。
创建另一个文件夹,将其命名为Converters,并将其全部放在派生IValueConverter或IMultiValueConverter的classess中。这样一个步骤可以使您获得明显的分离,而且您不会将代码隐藏文件与不相关的代码混在一起。我知道,转换器将被调用一次,永远不会再调用,这就是我正在寻求解决方案的问题。