c# - 是否存在在 XAML 中使用任意 C# 表达式的现有方法?

标签 c# wpf xaml

我希望能够在 XAML 中使用任意 C# 表达式。通常这会根据两个绑定(bind)值计算 UI 元素的属性。

例如,根据其他两个属性计算 UI 元素的宽度。

这是我希望 XAML 看起来像的人为示例:

<TextBox
   x:Name="textBox1"
   />

<TextBox
   x:Name="textBox2"
   />

<Rectangle
    Height={Double.Parse(textBox1.Text) + Double.Parse(textBox2.Text)}
    />

当然,在 XAML 中没有执行此操作的内置方法。

我知道我可以将 MultiBinding 与自定义转换器结合使用,这通常是我做这种事情的方式。然而,在我看来,在 XAML 中包含一些 C# 代码会简单得多,我想知道是否有人已经用 XAML 扩展或其他东西解决了这个问题。

最佳答案

您可以像这样将 C# 代码嵌入到 XAML 中:

 <x:Code>
            <![CDATA[

            void ButtonOnClick(object sender, RoutedEventArgs args)
            {
                Button btn = sender as Button;
                MessageBox.Show("The button labeled '" +
                                btn.Content +
                                "' has been clicked.","Information Message");
            }
            ]]>
  </x:Code>

但是根本不推荐这种方法,因为它混合了纯表示层和业务逻辑。

关于c# - 是否存在在 XAML 中使用任意 C# 表达式的现有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346165/

相关文章:

使用 ShowDialog() 的 WPF 模态窗口会阻止所有其他窗口

wpf - TextBlock 背景属性删除拉伸(stretch)

c# - wpf性能问题: Opacity on Brushes vs Opacity on Elements

c# - 在 C# 上导入的 DLL 中出现 "Unsigned Char * "错误

c# - 如何将函数扩展到 Random 类

c# - 多线程和事件

c# - Puppeteer 启动后软件卡住

c# - MVC 动态导航栏

wpf - 带孔的椭圆

c# - Windows Phone 中的多值转换器