此绑定的转换器参数应该是什么

2024-03-01

我正在尝试实现一个 wpf 用户控件,该控件使用转换器将文本框绑定到双精度列表。如何将用户控件的实例设置为转换器参数?

控件的代码如下所示

Thanks

<UserControl x:Class="BaySizeControl.BaySizeTextBox"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:local="clr-namespace:BaySizeControl"
    >
    <UserControl.Resources>
        <local:BayListtoStringConverter x:Key="BaySizeConverter"/>
    </UserControl.Resources>
    <Grid>

        <TextBox  Name="Textbox_baysizes" 
                  Text="{Binding RelativeSource={RelativeSource self},
                                Path=Parent.Parent.BaySizeItemsSource, 
                                Converter={StaticResource BaySizeConverter}}"
                  />
    </Grid>
</UserControl>

另一种方法是让转换器继承 DependencyObject(或 FrameworkElement)。这允许您声明依赖属性,从而可以从 XAML(甚至是 Binding)设置其值。

示例:用于乘以指定因子的值的转换器,该因子是从自定义控件 (MyControl) 中的属性(因子值)获取的。

转换器:

public class MyConverter : DependencyObject, IValueConverter
{
    // The property used as a parameter
    public double Factor
    {
        get { return (double) GetValue(FactorProperty); }
        set { SetValue(FactorProperty, value); }
    }

    // The dependency property to allow the property to be used from XAML.
    public static readonly DependencyProperty FactorProperty =
        DependencyProperty.Register(
        "Factor",
        typeof(double),
        typeof(MyConverter),
        new PropertyMetadata(1.15d));

    #region IValueConverter Members

    object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        // Use the property in the Convert method instead of "parameter"
        return (double) value * Factor;
    }

    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

在 XAML 中使用:

<MyConverter x:Key="MyConv"
             Factor={Binding ElementName=MyControl, Path=FactorValue}
/>

因此,您现在可以为转换器中需要的每个参数声明一个依赖属性并绑定它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

此绑定的转换器参数应该是什么 的相关文章

  • 为什么在从同一解决方案引用另一个项目时会出现 FileNotFound 异常?

    我正在学习如何使用 NUnit 我的解决方案中有我的主项目 并在同一解决方案中创建了一个单独的项目 该项目将保存我的单元测试 并具有自己的命名空间 从该项目中 我添加对主项目的引用并添加 using MainProjectNamespace
  • WPF 中的 IWin32Window

    我有一个 excel AddIn 它公开 IWin32Window 作为它的主 UI 我想显示一个使用它作为父窗口的 WPF 窗口 我该如何去做呢 您可以使用窗口互操作助手 http msdn microsoft com en us lib
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • 如何使用 DesignData 帮助开发 Metro 应用程序?

    我一直在 Windows Phone 应用程序中愉快地使用 DesignData 我希望使用它来帮助在 VS2012 Blend for VS 中的 Metro 风格应用程序中可视化设计 我已经尝试过希望显而易见的方法
  • Silverlight 4relativeSourceFindAncestor绑定[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Silverlight 4中会有Re
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l
  • 将 .NET 类库(主要定义 CRUD 操作)公开为服务

    公开现有内容的最佳 有效和最快的方法是什么 类 图书馆 主要定义 CRUD 操作 作为service 周转基金服务 or WCF数据服务 以便它可以与银光 or Ajax 在那儿tools 代码生成器 RAD 工具 哪些可以支持这个 预先感
  • .NET 部署到网络共享

    我有一个 NET 3 5 应用程序 希望将其安装在客户端服务器上 并让工作站直接从网络共享运行它 我读过一些内容 似乎表明这并不像简单地将应用程序复制到网络共享那样简单 就像我对本机 exe 所做的那样 不幸的是 似乎缺乏关于正确 最佳方法
  • vb.net if 简写

    有没有办法使用速记来做这样的事情 If Not txtBookTitle Text String Empty Then objBook DisplayName txtBookTitle Text End If objBook Display
  • F# 中的自定义路由事件

    我正在尝试翻译这段 C 代码 https msdn microsoft com en us library ms752288 aspx 到目前为止我的尝试 type MyButtonSimple as self inherit Button
  • 如何将子属性的触发器设置为父属性?

    我有一个带有 ToggleButton ExpanderButton 的 TreeView 切换按钮有两个图像 一张用于展开 另一张用于未展开 但是 当我选择 TreeViewItem 时 我用不同的颜色突出显示它 并且我也想更改图像的颜色
  • NHibernate HQL 相当于 T-SQL 的 TOP 关键字

    NHibernate HQL 相当于 T SQL 的 TOP 关键字是什么 另外 用非 HQL 方式说 给我一门课的前 15 个 是什么意思 在 HQL 中这实际上非常简单 var top15 session CreateQuery fro
  • 使用 SSH.NET SftpClient 设置扩展文件属性

    在使用 Renci SSH NET SFTP 库将文件从 Windows 上传到远程计算机 Ubuntu 16 04 LTS 后 我尝试使用扩展文件属性来存储一些信息 但属性没有得到保留 这就是我尝试设置扩展属性的方式 SftpFileAt
  • 仅当单击复选框时才更改 ListViewItem 的选中状态

    默认情况下 双击 ListViewItem 会切换其选中状态 我只想通过单击项目的复选框或在突出显示项目时按空格键来更改选中状态 这容易做到吗 该解决方案涉及 3 个事件和 1 个 bool 类型的状态变量 private bool inh
  • 如何用 C# 发送原始以太网数据包? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法通过 C 将原始数据包以太网发送到其他主机 在 Windows 7 中 如果有区别的话 根据 Saint pl 的建议 我找
  • 如何延迟关闭并在窗口服务中运行进程

    我必须在 Windows 关闭时运行一个进程 即应用程序 有什么方法可以延迟 Windows 关闭并在 Windows 服务中运行该应用程序 protected override void OnShutdown Add your save
  • 是否可以创建一个包含多页 tiff 文件所有帧的 base64 字符串?

    使用已知的转换方法将多页 tiff 文件转换为 base64 字符串似乎只包含其中的一个页面 我从本地磁盘获取多页 tiff 文件 Image multiPageImage Image FromFile fileName 将其转换为 bas
  • 如何从 main 之外的类访问 XAML 对象?

    如果我尝试 var mainpage new Mainpage 我将运行主页构造函数 然后 XAML 对象中的所有字段都将返回 null 如何在 silverlight 中访问来自不同类但属于同一命名空间的 XAML 对象 让我通过例子来解
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • .NET 发布模式构建中是否提供堆栈跟踪信息?

    如果我选择发布模式来构建 dll 堆栈跟踪信息仍然可用吗 如果是的话 那么什么信息is发布模式下不可用 您始终拥有堆栈跟踪信息 这是与构建模式无关的运行时功能 但行号和源文件名通常在发布构建堆栈跟踪中不可用 您可以通过更改构建配置来创建完整

随机推荐