gpt4 book ai didi

c# - 可以使值转换器只能由我的用户控件访问吗? (WPF)

转载 作者:行者123 更新时间:2023-11-30 22:44:28 25 4
gpt4 key购买 nike

所以我养成了使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com