c# - 如何将绑定(bind)标记扩展从内联语法转换为元素语法?

标签 c# .net wpf xaml multibinding

我是一个完整的 .NET/C# nublet。我继承了一些使用 XAML 为窗口定义 UI 的代码,并且我正在尝试与一些现有的 XML 垃圾进行交互。这可能是一个非常简单的问题;我只是不知道要谷歌什么。

我有一个文本框,我想根据 bool 值禁用它。我可以用这段代码做到这一点:

list A:

<TextBox x:Name="ServerNameTextBox" ... IsEnabled="{Binding ServerName.Editable}" />

当我想将它基于一个变量一个复选框时,问题就来了。我已经阅读了有关 IMultiValueConverter 的文章并为此编写了一篇文章,但我不确定如何指定绑定(bind),因为格式发生了变化。

list B:

<TextBox x:Name="ServerNameTextBox" ... >
    <TextBox.IsEnabled>
        <Binding ElementName="CheckBoxServerNameEnabled" Path="IsChecked" />
        <Binding ??? />
     </TextBox.IsEnabled>
</TextBox>

为了做出与第一行中相同的引用,问号中需要添加什么?告诉我 list A 中使用的绑定(bind)类型叫什么的加分项。

谢谢!

最佳答案

{Binding ServerName.Editable} 是 ( in this case ) 等同于 {Binding Path=ServerName.Editable}

所以在你的MultiBinding中你有

<MultiBinding Converter="...">
    <Binding ElementName="CheckBoxServerNameEnabled" Path="IsChecked"/>
    <Binding Path="ServerName.Editable"/>
</MultiBinding>

markup extensions未命名的参数被传递给构造函数,Binding 有一个 constructor which takes a path .

关于c# - 如何将绑定(bind)标记扩展从内联语法转换为元素语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094188/

相关文章:

c# - 如何调试具有异步数据访问且没有调用堆栈的 WPF 应用程序?

c# - 单元测试 WCF 契约(Contract)是否匹配同步/异步?

c# - 从 0x0000 循环到 0xFFFF

c# - 将 "Treat wchar_t as built-in type"设置为 No 会影响 C# 互操作吗?

c# - 多个 C# 应用程序可以使用一个 App.Config 文件吗?

wpf - 使用 C# 在 wpf 中更新 StatusBar 中的文本

c# - 单击复选框标签后禁用选中/取消选中复选框

.net - 对.net混淆代码进行反向工程有多容易?

c# - TfsConfigurationServer.GetService<VersionControlServer>() 总是返回 null

c# - 当我 "new"时 ObservableCollection 失去绑定(bind)