我希望能够在XAML中使用任意C#表达式.通常,这将是基于两个绑定值计算UI元素的属性.
例如,基于另外两个属性计算UI元素的宽度.
这是我希望XAML看起来像一个人为的例子:
<TextBox
x:Name="textBox1"
/>
<TextBox
x:Name="textBox2"
/>
<Rectangle
Height={Double.Parse(textBox1.Text) + Double.Parse(textBox2.Text)}
/>
Run Code Online (Sandbox Code Playgroud)
当然,在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>
Run Code Online (Sandbox Code Playgroud)
但这种方法根本不推荐,因为它混合了纯表示层和业务逻辑。