所以我养成了使用 WPF/C# 值转换器的习惯,因为它们很棒。我通常只为值转换器设置一个文件夹,然后在我可能需要它们的任何 xaml 文件中访问它们。
我目前正在开发一个用户控件,它将具有一些我不希望其他类能够访问的值转换器。换句话说,值转换器存在于代码隐藏文件中,并且只能从该文件和关联的 xaml 访问。我的第一个想法是将它作为嵌套类放入代码隐藏文件中,但我找不到从 xaml 文件中访问嵌套类的方法。我是在朝着正确的方向前进,还是应该做其他事情?
我可以采用廉价的方式,将此控件放入它自己的命名空间中,但这并不能真正解决我的问题。
如有任何帮助或指导,我们将不胜感激。谢谢!
下面大致是我想要的:
public partial class MyControl: UserControl
{
//misc code for control
private class MyValueConverter : IMultiValueConverter
{
//conversion functions
}
}
是我的想法。
通常,值转换器是从 WPF 中访问的,例如:
`<local:MyValueConverter x:Key="MyValueConverter" />`
这仅在它们位于同一命名空间中时有效。如果它是一个嵌套类,我无法让它工作。我已经实现了使 valueconverter 仅对此用户控件可见的目标,但我终究无法弄清楚如何从 xaml 中访问它。
我的问题是从 xaml 中访问这个转换器。
最佳答案
这是不可能的(查看 here 的原因 - 第 2 段关于要求)
Your custom class must not be a nested class. Nested classes and the "dot" in their general CLR usage syntax interfere with other WPF and/or XAML features such as attached properties.
您当然可以解决这个问题 - 但这限制了您在代码隐藏中设置值转换器(这很讨厌 :-))
不过我很好奇,您为什么不希望其他类使用它?
关于c# - 可以使值转换器只能由我的用户控件访问吗? (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419661/