我可以在WPF中编写一个XAML标记触发器来动态地将值从窗口控件分配给主窗口类中的变量吗



下午好。我的名字叫尤金。首先,请原谅我英语不好。我有以下问题。在WPF应用程序主窗口中,我有一个TextBox,在XAML标记中,我将其描述如下:

<TextBox Name="tbxRange" Grid.Row="1" Grid.Column="3" TextAlignment="Center"
         Text="{Binding Path=CurCompassRange.Range, UpdateSourceTrigger=PropertyChanged,
         Mode=OneWayToSource, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>

在这个文本框中,我打印了一个浮点数值。Text属性的内容可以在挂起的程序执行过程中多次更改。在MainWindow类中,我有以下成员作为字段:

private static Double topMargin = 0;
private static Double bottomMargin = 0;
private static Double initialValue;

当应用程序开始运行时,为"initialValue"分配一次的值。我需要以下东西。当我在TextBox中打印一个新数字时,它的值首先必须从"initialValue"中减去("initialValue"本身的值不会改变),减法的结果必须存储在"bottomMargin"中,其次,打印数字的值必须添加到"initialName"中,加法的结果必须保存在"topMargin"。在程序执行期间,我可以多次更改TextBox的Text属性的内容。我的问题如下我可以在XAML标记中编写一些触发器吗?每当TextBox Text属性的值发生变化时,这些触发器都可以进行上述减法和加法运算当然,我知道我可以尝试(在C#上)编写TextBox TextInput事件处理程序来执行这些操作,并在其主体中执行减法和加法,但在XAML标记中使用触发器似乎更为优雅。我将非常感谢你的帮助。我在WPF方面不是很强。请帮帮我。

首先,不能动态更改Margin.Top或Margin.Bottom作为"Top"或"Bottom"本身不是依赖属性。但是,Margin本身是一个依赖属性,它接收"Thickness"类型的实例。简而言之,这意味着即使你打算更改保证金。单靠顶部,你也必须申请新的保证金。。

其次,您需要进行的各种计算不是仅使用XAML即可完成的,您必须在代码背后创建一个值转换器,并关联XAML绑定才能使用该值转换器。

因此,简单的答案是否定的——你不能以XAML的纯形式进行描述,你必须以某种方式编写一些代码背后的东西。

最新更新